使用AmazonSimpleSystemsManagementClient GetParameters失败

时间:2017-08-06 23:06:09

标签: aws-lambda amazon-iam

我在C#中有一个Lambda,我试图访问存储在ECQ参数存储中的参数。参数存储为字符串值。

我的Lambda配置为使用现有角色。在IAM中,我已为该角色分配了以下策略:

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

Lambda在我们的VPC内部运行,如果参数值是硬编码的,它会成功执行。

获取参数的代码是:

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之前和之后都有记录,并且在调用之后它没有进入日志记录。

我需要做什么才能从Lambda获取参数值?

1 个答案:

答案 0 :(得分:1)

你应该有类似的东西:

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