Amazon web services 如何使用aws CDK提供弹性豆茎的特定/完全访问权限?
我已经创建了aws管道,使用CDK类型脚本代码将我的dot net framework应用程序部署到elastic beanstalk 但在部署步骤中,它失败了,错误如下 权限不足 提供的角色没有elasticbeanstalk:CreateApplicationVersion权限 我不确定如何使用aws cdk分配权限 我应该如何在下面的代码中添加权限 下面是我的部署阶段代码Amazon web services 如何使用aws CDK提供弹性豆茎的特定/完全访问权限?,amazon-web-services,amazon-elastic-beanstalk,aws-cdk,Amazon Web Services,Amazon Elastic Beanstalk,Aws Cdk,我已经创建了aws管道,使用CDK类型脚本代码将我的dot net framework应用程序部署到elastic beanstalk 但在部署步骤中,它失败了,错误如下 权限不足 提供的角色没有elasticbeanstalk:CreateApplicationVersion权限 我不确定如何使用aws cdk分配权限 我应该如何在下面的代码中添加权限 下面是我的部署阶段代码 const appName=“SampleDotNetMVCWebApp”; const newRole=new i
const appName=“SampleDotNetMVCWebApp”;
const newRole=new iam.Role(此“角色”{
假设人:new iam.ServicePrincipal(“elasticbeanstalk.amazonaws.com”)
});
newRole.addToPolicy(
新iam.policy声明({
资源:[“*”],
操作:[“elasticbeanstalk:CreateApplicationVersion”]
})
);
const app=new elasticbeanstalk.cfn应用程序(此“电子应用程序”{
应用程序名称:appName
});
const elbEnv=新的elasticbeanstalk.cfnenEnvironment(此“环境”{
环境名称:“SampleMVceBenEnvironment”,
applicationName:appName,
平台:平台,
solutionStackName:“运行IIS 8.5的64位Windows Server 2012 R2 v2.5.0”
});
pipeline.addStage({
stageName:“部署”,
行动:[
新型弹性豆茎({
actionName:“部署TOEB”,
applicationName:appName,
环境名称:“SampleMVceBenEnvironment”,
输入:cdkBuildOutput,
角色:新角色
})
]
});
注意:在上述代码中,aws管道操作“ElasticBeanStalkDeployAction”是自定义操作,因为aws cdk尚未发布此部署到eb操作功能。
您可以在此处检查IAction的问题和实现代码
您需要向
ElasticBeanStalkDeployAction
添加权限才能创建CreateApplicationVersion
,使用
这些策略将与角色一起创建,而那些由
addToPolicy
使用单独的CloudFormation资源添加
(允许绕过循环依赖关系,否则可能会
介绍)
const elasticBeanStalkDeployAction=新elasticBeanStalkDeployAction({
actionName:'DeployToEB',
applicationName:appName,
环境名称:“SampleMVceBenEnvironment”,
输入:cdkBuildOutput
})
elasticBeanStalkDeployAction.addToRolePolicy(新策略语句({
效果:effect.ALLOW,
资源:['*'],
操作:['elasticbeanstalk:']
}));
稍后,使用您创建的对象并将其传递到动作:
pipeline.addStage({
stageName:'部署',
动作:[elasticBeanStalkDeployAction]
});
或者,按照此处的建议-
此问题可以通过在ElasticBeanStalkDeployAction的绑定方法中添加策略来解决
公共绑定(范围:构造,阶段:codepipeline.IStage,选项:codepipeline.ActionBindOptions):
codepipeline.ActionConfig{
options.role.addManagedPolicy(
iam.ManagedPolicy.fromAwsManagedPolicyName(
“AWSElasticBeanstalkFullAccess”
));
}
感谢您的回复,因为我找不到.addToRolePolicy方法,所以我在elasticBeanStalkDeployAction对象上创建了新角色,并使用.addToPolicy方法添加了新的策略声明,该方法给我带来了错误。我的aws用户帐户无权假定roleI已编辑了问题详细信息,以便更好地理解此问题问题。老实说,这对我很有效,你能告诉我你得到的具体错误吗?也许我在代码的其他地方犯了一些愚蠢的错误。我对cdk这件事还不熟悉。无论如何,我已经通过在实现IAction的ElasticBeanStalkDeployAction类的bind方法中添加托管策略解决了这个问题。正如这里所建议的-将标记为答案,并将添加我的解决方案,非常感谢您的所有帮助。。!我喜欢这种解决方法,虽然这有点复杂,但解决方案有点复杂。但它使主代码看起来自然。iam策略由action类it自身负责。我也使用了bind函数: