2017-08-06 51 views
6

C# lambda bir Lambda var ve ECQ Parameter Store'da saklanan parametrelere erişmeye çalışıyorum. Parametreler String Değeri olarak saklanır.AmazonSimpleSystemsManagementClient GetParameters kullanma

Benim Lambda varolan bir rolü kullanacak şekilde yapılandırılmıştır. IAM, ben role aşağıdaki politikaları atadık:

  • AmazonRedshiftReadOnlyAccess
  • AmazonKinesisReadOnlyAccess
  • AmazonVPCFullAccess
  • AWSLambdaExecute
  • AmazonSSMReadOnlyAccess
  • AWSLambdaVPCAccessExecutionRole

Lambda VPC'mizin içinde çalışır ve eğer parametre değeri kodlanmışsa, başarılı bir şekilde çalışır. parametresini almak için

Benim kodudur:

var client = new AmazonSimpleSystemsManagementClient(RegionEndpoint.APSoutheast2); 
var request = new GetParametersRequest 
{ 
    Names = new List<string>{ "ParameterName" } 
}; 
var response = client.GetParametersAsync(request).Result; 
var value = response.Parameters.Single().Value; 

önce ve GetParametersAsync çağrısının ardından günlüğü var ve bu çağrıdan sonra tomrukçulukla almaz.

Parametre değerini Lambda'dan alabilmek için ne yapmam gerekiyor?

+0

http://docs.aws.amazon.com/lambda/latest/dg/vpc.html – Ramankingdom

cevap

3

konu Lambda bizim VPC iç çalıştırarak neden oldu. SSM'ye erişim internet üzerinden yapılmaktadır, bu sayede İnternet'e Lambda erişimi vermek için bir NAT Gateway yapılandırmak zorunda kaldım.

Bu yapıldıktan sonra, Lambda SSM parametrelerine başarıyla erişebilir.

1

Sen benzer bir şey olmalıdır: zaman uyumsuz çağrısında

public async Task<Response> ProcessS3ImageResizeAsync(SimpleS3Event input) 
{ 
    var response = await client.DoAsyncWork(input); 
    return response; 
} 

tepki böylece daha önce beklemenize gerek, hemen değil.

fazla bilgi:

[1] http://docs.aws.amazon.com/lambda/latest/dg/dotnet-programming-model-handler-types.html#dot-net-async

+0

Örnek, doğrudan kaynağımdan, sizin durumunuza uygun değişikliklere ihtiyaç duyuyor. Fikir çok basit olduğunda, büyük bir anlaşma olmamalı. – mico

+0

Cevabınız için teşekkür ederiz. Kişisel erişim anahtarımı kullanarak Visual Studio ile çalıştırdığımda çalıştığım kod. Lambda'da çalışmaya çalışmıyor - bunun bir IAM sorunu olduğuna inanıyorum ama anlayamıyorum. – Anthony

+0

İyi bir cevap bulmuşsunuzdur. Daha fazla düşünmek, beklerken GetParametersAsync içinde beklemek için kullanılır. – mico