2016-04-05 23 views
17

tarafından üstlenilemez Oluşturma işleviyle bir lambda işlevi oluşturmaya çalıştığımda "İşlev, Lambda tarafından üstlenilemez" hatası alınıyor.İşlev için tanımlanan rol, Lambda

aws lambda oluşturmak fonksiyonlu
--region bize-batı-2
--function isim HelloPython
--zip dosya fileb:
--role arn //hello_python.zip: aws: iam :: my-acc-hesap-id: rol/default
--handler hello_python.my_handler
--runtime python2.7
--memory boyutlu --timeout 512

+2

Hata nedir? Soru nedir? – jotik

+0

Bu aynı hatayı alıyorum, herhangi bir şans? –

+2

@ox., Aşağıdaki yeni cevaba bakın. Benim için birkaç saniye bekliyorum. – Zanon

cevap

20

Bu hatayla da karşılaşıyorum. Kesin bir cevabınız yok (henüz), ancak size ve/veya başkalarına bu soruna yardımcı olabilecek birkaç ipucu ileteceğim.

A) Birlikte Hesap kimliğinizi ve rol adı koyarak Rol ARN inşa, ben hesap kimliği sadece rol ve muhtemelen ilave politikaları oluşturduysanız içerdiği çizgilere

B) olmadan olması gerektiğini düşünüyorum bunun için, rolün bu hatayı tetikleyeceği (küçük) bir zaman penceresi var gibi görünüyor. Görevdeki son işlem ile işlev çağrısı arasındaki 5 veya 6 saniye arasında uyku, sorunu atlamamı sağladı (ancak tabi ki zamanlama değişkendir, bu yüzden bu en iyisi iş başında).

+13

+1 "5 veya 6 saniye uyku" buradaki çözümdür. JavaScript SDK'yı kullanarak aynı sorunu yaşadım ve benim için beklemeyi bekledim. Node için kod örneği ile kendi kendine yanıtlanmış [soru] (http://stackoverflow.com/q/37503075/1476885) gönderdim. – Zanon

+1

@Zanon - Q/A'nızın göstericisine teşekkürler. Zamanım olsaydı, bunu resmi forumlara aktarmaya çalışırdım, genellikle kaynakların hazır olması gerektiğinde, sorgulayabileceğimiz bir durum alırız (ve boto3 kullanıyorsanız bile garsonluk nesneleri) tuhaf (belgesiz afaik) tutarsızlık gibi – FOR

+1

'yeniden deneme 'python paketi hızlı bir kurtarma oldu - sadece aşağıdaki ile yaratma fonksiyonunu dekore etti:' @ retrying.retry (wait_exponential_multiplier = 1000, wait_exponential_max = 10000) ' –

26

"İşlevler için tanımlanan rol, Lambda tarafından üstlenilemez" hatası aldım çünkü rolleri "Güven İlişkisi" yapılandırma dosyasını güncelleştirmedim. Zaman aşımı ile ilgili konulara yorumlarda bağlantılı cevapta rastlamadım.

Yukarıdaki yanıtlardaki yorumlar, aşağıdakileri eklemeniz gerektiğine işaret etti.

  1. gidin 'IAM> Roller> YourRoleName'
    • (Not: rol listede yoksa, o zaman bunu oluşturmanız gerekir.)
  2. 'Güven seçin ilişkiler sekmenin
  3. seç 'Düzenleme Güven İlişki'

Mine aşağıda gibi sona erdi.

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     <your other rules> 
    }, 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "Service": "lambda.amazonaws.com" 
     }, 
     "Action": "sts:AssumeRole" 
    } 
    ] 
} 
+1

Çok teşekkürler, işe yaradı benim için. Bu kabul edilen cevap olarak işaretlenmelidir. – arnold

9

Benim için sorun, rol için eksik bir adın olmasıdır.Ben

Ben

aws iam get-role --role-name MyRoleName 
çalıştırarak bu keşfetti (tabi benim aws kimliği aslında 000000000000 değildir) o
--role arn:aws:iam::000000000000:role/service-role/MyRoleName 

olmalıydı zaman

--role arn:aws:iam::000000000000:role/MyRoleName 

set

Sonuç kümesindeki "Arn" özelliğinde.

+0

Teşekkürler, bu kayıptı. – apines

1

Benim için sorun, yanlış varsayılan bölge ortamı anahtarını ayarladığım oldu.

İlgili konular