首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加逻辑以检查Infra是否已存在,如果不是AWS,则部署

添加逻辑以检查Infra是否已存在,如果不是AWS,则部署
EN

Stack Overflow用户
提问于 2020-10-21 20:04:13
回答 1查看 125关注 0票数 0

标题可能很模糊,所以让我澄清一下。我目前正在尝试启用AWSConfig规则,为了做到这一点,帐户必须有AWSConfigurationRecorder和AWSDeliveryChannel。问题在于,当帐户已启用此功能时,它将在尝试部署时将整个堆栈出错。我试图找出一种方法来创建逻辑,从本质上检查AWSConfigurationRecorder或AWSDeliveryChannel是否已经存在,以及它们是否要跳过它,只部署规则,而visa则相反。以下是代码:

代码语言:javascript
复制
export class fullConfigStack extends cdk.Stack {
    constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
      super(scope, id, props);
      const globalConfigRole = new iam.Role(this, 'globalConfigRole', {
        assumedBy: new iam.ServicePrincipal('config.amazonaws.com'),   // required
    });
    globalConfigRole.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSConfigRoleForOrganizations'));
    globalConfigRole.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('ReadOnlyAccess'));
    
      const globalConfigRecorder = new config.CfnConfigurationRecorder(this, 'globalConfigRecorder',{
        roleArn: globalConfigRole.roleArn,    
        name: 'globalConfigRecorder',
        recordingGroup: {
          allSupported: true,
          includeGlobalResourceTypes: true
      }
    });
    const globalConfigBucket = new s3.Bucket(this, 'globalConfigBucket',{
        accessControl: s3.BucketAccessControl.LOG_DELIVERY_WRITE
      });
    const cisConfigDeliveryChannel = new config.CfnDeliveryChannel(this,'cisConfigDeliveryChannel',{
        s3BucketName: globalConfigBucket.bucketName,
        configSnapshotDeliveryProperties: {
            deliveryFrequency: 'TwentyFour_Hours'
        }
    });
    const generalConfigRole = new iam.Role(this,  'generalConfigRole',{
        assumedBy: new iam.ServicePrincipal('config.amazonaws.com')
      });

      const cloudTrailEnabledRule = new ManagedRule(this, 'cloudTrailEnabledRule', {
        identifier: 'CLOUD_TRAIL_ENABLED'
      });

因此,为了再次澄清,我想在cisConfigDeliveryChannel和globalConfigRecorder中添加一些if/ out逻辑,以避免整个堆栈出错!如果有其他办法解决这个问题,我没有看到,请告诉我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-21 20:15:52

在AWS CloudFormation模板中,您可以使用一个函数来检查您的资源是否存在。然后,此Lambda函数返回CloudFormation的标识符,以确定是否需要创建资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64470966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档