Efi*_* MK 3 amazon-s3 amazon-web-services amazon-iam boto3 aws-lambda
我使用boto3来为s3创建一个预签名的发布网址。
s3 = boto3.client('s3')
post = s3.generate_presigned_post(
Bucket=bucket_name,
Key=f"{userid}.{suffix}"
)
Run Code Online (Sandbox Code Playgroud)
该aws_access_key_id正在使用不正确,使用正确的的方法之一是通过环境变量增加的环境变量。
知道如何使用在IAM中创建的用户定义的aws访问密钥强制执行吗?
附加到执行Lambda的IAM角色的策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:AttachNetworkInterface",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:DescribeInstances",
"ec2:DescribeNetworkInterfaces",
"ec2:DetachNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:ResetNetworkInterfaceAttribute"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"kinesis:*"
],
"Resource": "arn:aws:kinesis:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"sns:*"
],
"Resource": "arn:aws:sns:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"sqs:*"
],
"Resource": "arn:aws:sqs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"dynamodb:*"
],
"Resource": "arn:aws:dynamodb:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"route53:*"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您不应将IAM用户用于lambda中的任何类型的执行权限。而是使用带有适当策略的IAM角色,并将该角色附加到Lambda函数。
另请注意,配置角色后,lambda会自动将访问ID和密码设置为环境变量,并且Boto无需任何其他配置即可检索它们。
| 归档时间: |
|
| 查看次数: |
3561 次 |
| 最近记录: |