标签: aws-cloudformation

CloudFormation 资源创建(如果不存在)

我想用 CloudFormation 创建 Route53 HostedZone,所以我想检查一下 Route53 中关于 HostedZone 的一些信息是否存在。

在我的情况下,我需要检查资源是否存在,忽略资源创建。我该如何处理这个问题。

我的 CloudFormation 模板如下所示。

"myDNSRecord" : {
  "Type" : "AWS::Route53::RecordSet",
  "Properties" : {
    "HostedZoneName" : { "Ref" : "HostedZoneResource" },
    "Comment" : "DNS name for my instance.",  
    "Name" : {
      "Fn::Join" : [ "", [
        {"Ref" : "Ec2Instance"}, ".",
        {"Ref" : "AWS::Region"}, ".",
        {"Ref" : "HostedZone"} ,"."
      ] ]
    },
    "Type" : "A",
    "TTL" : "900",
    "ResourceRecords" : [
      { "Fn::GetAtt" : [ "Ec2Instance", "PublicIp" ] }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation devops infrastructure-as-code

13
推荐指数
1
解决办法
1万
查看次数

AWS CDK 生成的资源标识符非常糟糕且不可读。有任何解决这个问题的方法吗?

任何使用 AWS CDK 的人都会遭受可怕的资源标识符。

堆栈/嵌套堆栈名称示例:

在此处输入图片说明

或资源名称示例:

在此处输入图片说明

这些标识符读起来很糟糕。是否有任何解决方法来覆盖这些标识符?

我试图设置资源的 ID/名称/标识符/别名。然而,似乎 cdk 或 cloudformation 本身正在生成这些字符串。

谢谢你的建议!

amazon-web-services aws-cloudformation aws-cdk

13
推荐指数
1
解决办法
2136
查看次数

是否可以在不创建主题的情况下使用CloudFormation创建SNS订阅?

是否可以在AWS CloudFormation JSON模板中创建"订阅"资源而无需创建新的AWS::SNS::Topic

在我的例子中,主题是在CloudFormation脚本之外创建的,我想创建一些订阅,涉及在脚本中创建的资源.

IE

   "DbfExtractQueue": {
        "Type": "AWS::SQS::Queue"
    },

    "EtlSubscription": {
        "Type": "AWS::SNS::Subscription",
        "Properties": {
            "Endpoint": { "Fn::GetAtt": ["DbfExtractQueue", "Arn"] },
            "Protocol": "sqs",
            "TopicArn": { "Ref": "EtlNotificationTopicARN" }
        }
    },
Run Code Online (Sandbox Code Playgroud)

EtlNotificationTopicARN被传递到脚本中并表示SNS主题ARN.

amazon-web-services aws-cloudformation

12
推荐指数
2
解决办法
7893
查看次数

通过CloudFormation的AWS Lambda S3存储桶通知

我正在尝试通过CloudFormation创建Lambda通知,但是收到有关ARN格式错误的错误.

我的CloudFormation错误或者它还不支持Lambda预览.

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "LambdaArn": {
      "Type": "String",
      "Default": "arn:aws:lambda:{some-region}:{some-account-id}:function:{some-fn-name}"
    }
  },
  "Resources": {
    "EventArchive": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "NotificationConfiguration": {
          "TopicConfigurations": [
            {
              "Event": "s3:ObjectCreated:Put",
              "Topic": {
                "Ref": "LambdaArn"
              }
            }
          ]
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我推动这个CloudFormation时,我收到了消息:

The ARN is not well formed
Run Code Online (Sandbox Code Playgroud)

有没有人知道这意味着什么?我知道上面的例子已被修改,所以不使用我的实际 ARN,但在我的实际代码中,我直接从GUI复制了ARN.

此外,有趣的是我能够通过AWS控制台创建通知,因此我只是假设AWS CloudFormation尚不支持此功能(即使这并不十分清楚我在阅读文档时没有想到).

amazon-web-services aws-cloudformation aws-lambda

12
推荐指数
2
解决办法
6644
查看次数

我可以在AWS Cloudformation json模板的"参数"中使用"Fn :: Join"吗?

我想在一些Policy/Loadbalancers标签名称的参数Cloudformation json模板快捷方式中使用,如下所示:

"SomeScalingGroupName": {
            "Type": "String",
            "Default": {"Fn::Join": ["", ["Process-", {"Ref": "Env"}, "-Some-Worker-Name"]]}
        },
Run Code Online (Sandbox Code Playgroud)

我得到错误:

模板验证错误:模板格式错误:每个默认成员必须是字符串.

所以我的问题是,在参数中使用函数连接的正确方法是什么?或者我还有其他办法吗?或者你有什么更好的建议来使用它?

谢谢!

json amazon-web-services aws-cloudformation

12
推荐指数
1
解决办法
1万
查看次数

如何通过CloudFormation授予API Gateway调用lambda函数的权限?

我一直在网上寻找答案.

基本上,我们使用Swagger来启动一个API,它非常棒并且运行良好,但有一件事不起作用......当我们调用一个端点时,我们得到一个500错误(它不是500错误,我们提供的是AWS的一个.该错误指出"由于配置错误导致执行失败:对Lambda函数的权限无效"(https://youtu.be/H4LM_jw5zzs < - 这是来自其他用户的视频,我收到的错误).

我已经走了很多路,并找到了答案......它涉及使用AWS CLI,看起来有点像这样:

aws lambda add-permission \
--function-name FUNCTION_NAME \
--statement-id STATEMENT_ID \
--action lambda:InvokeFunction \
--principal apigateway.amazonaws.com \
--source-arn "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/METHOD/ENDPOINT"
Run Code Online (Sandbox Code Playgroud)

这很棒,但我们正在使用CloudFormation来启动所有内容,我们希望这是自动化的.有没有更简单的方法来解决这个问题?CloudFormation中是否有某些内容可以为我们提供所需的资源政策?

我正在尝试这个问题,但是我今天已经开始工作了几个小时,这对我们的API版本来说有点阻碍,所以任何帮助都会非常感激.:)

amazon-web-services aws-cloudformation aws-lambda aws-api-gateway

12
推荐指数
3
解决办法
1万
查看次数

如何通过CloudFormation在Cognito中要求电子邮件验证?

我想我在这里试过所有的房产:

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html

无法检查此框:

在此输入图像描述

我的配置目前:

    CognitoUserPoolGeneral:
      Type: AWS::Cognito::UserPool
      Properties:
        UserPoolName: general
        Policies:
          PasswordPolicy:
            MinimumLength: 6
            RequireLowercase: false
            RequireNumbers: false
            RequireSymbols: false
            RequireUppercase: false
        Schema:
          - AttributeDataType: String
            Name: preferredLocale
            DeveloperOnlyAttribute: false
            Mutable: true
            Required: false
        EmailVerificationMessage: "Here's your verification code: {####}. Please provide it inside the application."
        EmailVerificationSubject: "subject"
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation amazon-cognito aws-cognito

12
推荐指数
1
解决办法
1666
查看次数

Cloudwatch failedinvocation错误没有可用的日志

我已经设置了一个Cloudwatch规则事件,其中在完成上一个任务定义时启动了ECS任务定义.

我可以看到事件触发任务定义但是它失败了.

此失败的唯一可见性是在规则指标中,我在其中看到指标failedinnvocations.

问题,是否有任何日志可以查看触发器失败的原因?

我可以通过管理控制台手动设置规则,一切正常.

通过云信息模板设置规则时发生错误.

我比较了两个规则,两者都是相同的,除了角色.但是,两个角色具有相同的权限.

amazon-ec2 amazon-web-services amazon-ecs aws-cloudformation amazon-cloudwatch

12
推荐指数
5
解决办法
3689
查看次数

AWS CloudFormation - 在 RDS 实例准备好后创建表?

CloudFormation 业余爱好者在这里。一直在网上查找,但找不到任何关于在我的 RDS 实例通过 CloudFormation 建立后我将如何创建表的参考资料。是否可以指定一个 Lambda 来启动和创建所有表,或者指定一个要应用的 SQL 文件?这方面的标准模式是什么?

amazon-web-services amazon-rds aws-cloudformation aws-lambda

12
推荐指数
1
解决办法
4786
查看次数

在云形成创建云锋后创建无效的最佳方法是什么?

我正在创建一个完全无服务器的解决方案,它也将创建一个 s3 存储桶和 CloudFront。使用来自 bitbucket 管道的云形成模板

我还想为 CloudFront 创建 invalidate。

1)是否有可能在云形成中创建失效?

2)如果不是,那么我怎样才能从我的云形成中获取分布 ID,然后使用 aws cli 创建失效

CFDistribution:
Type: 'AWS::CloudFront::Distribution'
DependsOn: UIBucket
Properties:
  DistributionConfig:
    Aliases:
      - !Sub "${AppSubDomain}.${SSMDomain}"
    Origins:
      - DomainName: !GetAtt UIBucket.DomainName
        Id: S3BucketOrigin
        S3OriginConfig:
          OriginAccessIdentity: !Join
            - ''
            - - 'origin-access-identity/cloudfront/'
              - !Ref CFOriginAccessIdentity
    Comment: !Sub 'CloudFront origin for ${AppSubDomain}.${SSMDomain}'
    DefaultCacheBehavior:
      AllowedMethods:
        - GET
        - HEAD
        - OPTIONS
      TargetOriginId: S3BucketOrigin
      ForwardedValues:
        QueryString: 'false'
        Cookies:
          Forward: none
      ViewerProtocolPolicy: redirect-to-https
    DefaultRootObject: index.html
    Enabled: 'true'
    HttpVersion: http2
    PriceClass: PriceClass_All
    ViewerCertificate:
      AcmCertificateArn: !Ref …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation

12
推荐指数
1
解决办法
1425
查看次数