2017-08-06 8 views
6

में विफल रहता है मेरे पास सी # में एक लैम्ब्डा है और मैं ईसीक्यू पैरामीटर स्टोर में संग्रहीत पैरामीटर तक पहुंचने का प्रयास कर रहा हूं। पैरामीटर को स्ट्रिंग वैल्यू के रूप में संग्रहीत किया जाता है।अमेज़ॅन सिंपल सिस्टम का उपयोग करनामैंशन क्लाइंट GetParameters

मेरा लैम्ब्डा मौजूदा भूमिका का उपयोग करने के लिए कॉन्फ़िगर किया गया है। IAM में, मैं भूमिका के लिए निम्न नीतियाँ लागू की है:

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

लैम्ब्डा हमारे वीपीसी के अंदर चलाता है और यदि पैरामीटर मान हार्ड-कोड किया गया है तो यह सफलतापूर्वक निष्पादित होता है।

मेरे पैरामीटर प्राप्त करने के लिए कोड है:

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; 

मैं प्रवेश से पहले और GetParametersAsync करने के लिए कॉल के बाद है और यह कॉल के बाद प्रवेश करने के लिए नहीं मिलता है।

लैम्ब्डा से पैरामीटर मान प्राप्त करने में सक्षम होने के लिए मुझे क्या करने की आवश्यकता है?

+0

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

उत्तर

3

मुद्दा लैम्ब्डा हमारे VPC के अंदर चल रहा है की वजह से किया गया था। एसएसएम एक्सेस करना इंटरनेट के माध्यम से किया जाता है इसलिए मुझे इंटरनेट पर लैम्ब्डा पहुंच देने के लिए एनएटी गेटवे को कॉन्फ़िगर करना पड़ा।

एक बार ऐसा करने के बाद, लैम्ब्डा सफलतापूर्वक एसएसएम पैरामीटर तक पहुंच सकता है।

1

आप के लिए कुछ इसी तरह होना चाहिए: async कॉल में

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

प्रतिक्रिया इस प्रकार आप से पहले प्रतीक्षा करने की आवश्यकता, तत्काल नहीं है।

अधिक जानकारी:

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

+0

उदाहरण सीधे मेरे स्रोत से है, आपके मामले के अनुरूप संशोधनों की आवश्यकता है। एक बार विचार इतना आसान हो जाने पर, यह एक बड़ा सौदा नहीं होना चाहिए। – mico

+0

आपके उत्तर के लिए धन्यवाद। मेरे व्यक्तिगत एक्सेस कुंजी का उपयोग कर विजुअल स्टूडियो के माध्यम से चलाए जाने पर कोड मेरे पास काम करता है। यह लैम्ब्डा के भीतर चलने में काम नहीं करता - मेरा मानना ​​है कि यह एक आईएएम मुद्दा है लेकिन इसे समझ नहीं सकता है। – Anthony

+0

अच्छा है कि आपको एक उत्तर मिला। मामले को और सोचते हुए, GetParametersAsync के अंदर प्रतीक्षा की जाती है, इसे कॉल करते समय नहीं। – mico

संबंधित मुद्दे