通过IAM授权解决访问拒绝问题。
在 AWS 中,Access Denied 可能是由于缺乏 IAM 用户或角色的权限(如 ec2.amazonaws.com 的 IAM 角色)引起的。因此,我们需要在 AWS Identity and Access Management(IAM)中为相应的 IAM 用户或角色授权 S3 的访问权限。
具体授权方法为创建一个新的 IAM 用户或角色,并在 IAM 策略中添加 S3 权限。以下是一个例子,将 S3 的所有权限授予某个 IAM 用户。
const s3 = new aws.S3();
const bucket = new aws.s3.Bucket('my-bucket');
const user = new aws.iam.User('my-user');
new aws.iam.UserPolicyAttachment('my-user-policy', {
user: user,
policyArn: aws.iam.ManagedPolicies.AmazonS3FullAccess,
});
new aws.s3.BucketNotification('bucket-notification', {
bucket: bucket.bucket,
notifications: [{
lambdaFunctions: [{
lambdaFunctionArn: myLambda.arn,
id: 'MyLambda',
events: ['s3:ObjectCreated:*'],
}],
id: 'SomeNotification',
events: ['s3:ObjectCreated:*'],
}],
}, {providers: {aws}});
以上代码将创建一个名为“my-user”的 IAM 用户,并将 AWS 管理策略“AmazonS3FullAccess”附加到该用户上。此策略提供对 S3 的完全访问权限。然后,创建一个 S3 存储桶和从该桶触发的 Lambda。最后,在存储桶中启用通知,通知将发送到 Lambda 函数。
此解决方案可以确保 AWS CDK 成功创建存储桶通知,并解决了由于访问拒绝问题而导致的错误。