Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何使用aws CDK提供弹性豆茎的特定/完全访问权限?_Amazon Web Services_Amazon Elastic Beanstalk_Aws Cdk - Fatal编程技术网

Amazon web services 如何使用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

我已经创建了aws管道,使用CDK类型脚本代码将我的dot net framework应用程序部署到elastic beanstalk

但在部署步骤中,它失败了,错误如下

权限不足 提供的角色没有elasticbeanstalk:CreateApplicationVersion权限

我不确定如何使用aws cdk分配权限

我应该如何在下面的代码中添加权限

下面是我的部署阶段代码


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函数: