amazon-web-services - 如何使用 aws CDK 授予对 Elastic beanstalk 的特定/完全访问权限?
问题描述
我创建了 aws 管道,以使用 CDK 打字稿代码将我的 dot net 框架应用程序部署到弹性 beanstalk。
但是在部署步骤中失败并出现以下错误
权限不足 提供的角色没有 elasticbeanstalk:CreateApplicationVersion 权限
我不确定如何使用 aws cdk 分配权限。
我应该如何在下面的代码中添加权限
下面是我的部署阶段代码
const appName = "SampleDotNetMVCWebApp";
const newRole = new iam.Role(this, "Role", {
assumedBy: new iam.ServicePrincipal("elasticbeanstalk.amazonaws.com")
});
newRole.addToPolicy(
new iam.PolicyStatement({
resources: ["*"],
actions: ["elasticbeanstalk:CreateApplicationVersion"]
})
);
const app = new elasticbeanstalk.CfnApplication(this, "EBApplication", {
applicationName: appName
});
const elbEnv = new elasticbeanstalk.CfnEnvironment(this, "Environment", {
environmentName: "SampleMVCEBEnvironment",
applicationName: appName,
platformArn: platform,
solutionStackName: "64bit Windows Server 2012 R2 v2.5.0 running IIS 8.5"
});
pipeline.addStage({
stageName: "Deploy",
actions: [
new ElasticBeanStalkDeployAction({
actionName: "DeployToEB",
applicationName: appName,
environmentName: "SampleMVCEBEnvironment",
input: cdkBuildOutput,
role: newRole
})
]
});
注意:在上面的代码中,aws 管道操作“ElasticBeanStalkDeployAction”是自定义操作,因为 aws cdk 尚未发布此部署到 eb 操作功能。您可以在此处查看 IAction 实施的问题和代码 https://github.com/aws/aws-cdk/issues/2516
解决方案
您需要添加权限ElasticBeanStalkDeployAction
才能创建CreateApplicationVersion
、使用.addToPolicy
这些策略将使用角色创建,而添加的策略
addToPolicy
是使用单独的 CloudFormation 资源添加的(允许绕过可能引入的循环依赖关系)。
const elasticBeanStalkDeployAction = new ElasticBeanStalkDeployAction({
actionName: 'DeployToEB',
applicationName: appName,
environmentName: 'SampleMVCEBEnvironment',
input: cdkBuildOutput
})
elasticBeanStalkDeployAction.addToRolePolicy(new PolicyStatement({
effect: Effect.ALLOW,
resources: ['*'],
actions: ['elasticbeanstalk:*']
}));
稍后,使用您创建的对象并将其传递给操作:
pipeline.addStage({
stageName: 'Deploy',
actions: [elasticBeanStalkDeployAction]
});
推荐阅读
- json - 跨所有组件使用数据
- sql-server - “联合所有”和分页如何协同工作?
- java - IBM MQ 客户端防止垃圾进入控制台输出
- javascript - 从引导模式动态获取文本框值
- google-bigquery - 创建在不同列上分区的新 Bigquery 表
- swift - 从 Swift 中的时间字符串获取小时值
- node.js - nodejs - TypeError [ERR_INVALID_ARG_TYPE]:第一个参数必须是字符串类型之一,缓冲区 - 当使用带有 http.request 的回调响应时
- python - Python scips 执行函数(CS50x 实验室 6:世界杯)
- visual-studio - MSBuild 还原给出“请求被中止:无法创建 SSL/TLS 安全通道。”
- http-status-code-404 - GitHub 错误 404 此处没有 GitHub Pages 站点