我正在按照http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-upload-deployment-pkg.html
一起实施lambda和S3的教程我添加了一个角色(IAM > Roles > lambda-s3-execution-role
),它的政策为AWSLambdaExecute
:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*"
}
]
}
此外,我已将IAM
用户设置为adminuser
,并且可以运行aws lambda list-functions --profile adminuser
之类的命令,但是当我运行以下命令时
aws lambda create-function \
--region us-east-2 \
--function-name CreateThumbnail \
--zip-file fileb://~/Deployment/build/distributions/lambdaDeployment.zip \
--role arn:aws:iam::12345678:role/lambda-s3-execution-role \
--handler CreateThumbnail.handler \
--runtime java8 \
--profile adminuser \
--timeout 10 \
--memory-size 1024
我收到了一个错误:
调用CreateFunction操作时发生错误(AccessDeniedException):调用CreateFunction操作时发生错误(AccessDeniedException):User:arn:aws:iam :: 12345678:user / testaccountyn无权执行:iam:PassRole资源:arn:aws:iam :: 12345678:role / lambda-s3-execution-role
你可以告诉我一条前进的道路吗?谢谢!答案 0 :(得分:0)
--role
参数替换为您在本教程前面创建的ARM:AWS:IAM。我有同样的问题。如果您看一下教程中的CLI参数,则IAM ID似乎是任意填写的。它实际上是数字12345678。在您的底部代码段中:--role arn:aws:iam::12345678:role/lambda-s3-execution-role \
)。
要解决此问题,我必须在创建执行角色步骤中粘贴我之前在教程中创建的角色的ID。在AWS中打开IAM服务,单击“角色,选择”权限”选项卡,然后复制您的角色ARN:
用您的凭据替换arn:aws:iam:12345678..
命令中的aws lambda create-function
行。最终命令应类似于:
$ aws lambda create-function --function-name CreateThumbnail \
--zip-file fileb://function.zip --handler index.handler --runtime nodejs8.10 \
--timeout 10 --memory-size 1024 \
--role REPLACE:THIS:WITH:YOUR:ROLE:ARN
应该这样做!希望它可以节省一些时间!
此外,如果在运行上述命令时遇到aws: command not found
错误,则需要按照以下步骤安装AWS Command Line Tools:Installing the AWS CLI
如果遇到You must specify a region. You can also configure your region by running "aws configure".
错误,则需要按照以下步骤配置终端配置文件:Configuring the AWS CLI。