Amazon web services AWS Lambda由单独账户中的s3存储桶触发
我试图触发一个Lambda函数来运行对s3存储桶的更新。我试图触发Lambda的s3 bucket位于一个单独的AWS帐户中 我尝试过的方法是在帐户中设置一个角色,该角色使用s3 bucket,拥有s3 bucket上的所有特权。然后,在Lambda的帐户中,我有一个角色,在另一个帐户中承担如下角色:Amazon web services AWS Lambda由单独账户中的s3存储桶触发,amazon-web-services,amazon-s3,aws-lambda,amazon-iam,Amazon Web Services,Amazon S3,Aws Lambda,Amazon Iam,我试图触发一个Lambda函数来运行对s3存储桶的更新。我试图触发Lambda的s3 bucket位于一个单独的AWS帐户中 我尝试过的方法是在帐户中设置一个角色,该角色使用s3 bucket,拥有s3 bucket上的所有特权。然后,在Lambda的帐户中,我有一个角色,在另一个帐户中承担如下角色: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::..."
]
}
]
}
我无法在触发Lambda事件的bucket列表中看到s3 bucket
在单独的帐户中使用s3 bucket触发Lambda是否可能?这是正确的解决方案吗?更新:似乎可以从S3跨帐户触发Lambda函数。见:
旧答案: Amazon S3在将对象添加到存储桶或从存储桶中删除对象时,可以触发AWS Lambda函数 但是,必须在铲斗本身上设置该触发器。您将需要bucket的所有者(或具有足够权限的人)来设置触发Lambda的配置
另外,被调用的Lambda函数必须与amazons3 bucket位于同一帐户中。您可以在一个帐户中创建Lambda函数,然后在另一个帐户中调用Lambda函数(提供足够的权限),但是帐户a中的Bucket不可能直接触发帐户B中的Lambda函数。假设您的Bucket在帐户a中,以及帐户B中的lambda。实际上,您可以通过以下方式执行此操作:
aws lambda add-permission \
--function-name MyFunction \
--region <your-region> \
--statement-id <whatever> \
--action "lambda:InvokeFunction" \
--principal s3.amazonaws.com \
--source-arn <source-bucket-arn> \
--source-account <Account-A-id> \
aws lambda添加权限\
--函数名MyFunction\
--区域\
--语句id\
--操作“lambda:InvokeFunction”\
--principal s3.amazonaws.com\
--源arn\
--来源帐户\
很抱歉格式不好,我仍然需要改进这一点:pThanks!效果很好。对于那些想知道您在哪里可以获得帐户Id的人,您的帐户设置中的数字Id Shappy to help:)如果需要,您还可以在资源的ARN或“支持”面板中找到您的帐户Id