我需要将我的 CF 模板(GraphQL 架构、Lambda 源等)的一些文件存储到 S3 存储桶中,该存储桶也(希望)在同一模板中定义,因为这似乎是直接删除内容之外的唯一方法进入模板来做。我也在尝试提前考虑 CI/CD,如果检查这些文件并且 CI/CD 工具适当地移动它们会很好。
有没有办法将文件从模板复制到 S3?大多数人如何使用 CI/CD 做到这一点?
deployment amazon-web-services continuous-integration amazon-cloudformation aws-cli
我们想为 AWS 中相当标准的堆栈创建一个模板。我们需要三层。
层:弹性负载均衡器
层:根据站点需求触发的警报创建/销毁多个Web服务器
层:数据库服务器
第 2 层上的实例应该知道数据库实例的主机名。理想情况下,我想获取数据库实例的私有 IP 并将其通过用户数据传递到 Web 服务器。
Fn::GetAtt不支持私有ip(只支持public)
我想另一种方法是构建堆栈,然后手动设置数据库私有 ip。虽然它确实使我们的设置不那么干净。理想情况下,我们希望在模板中描述所有内容。(即使这涉及通过user-data运行脚本)
有什么建议?
amazon-ec2 template amazon-web-services amazon-cloudformation
我正在动态构建 TemplateURL。
"TemplateURL" : { "Fn::Join" : ["", [ { "Ref" : "TemplateURL"}, "substack.template" ]] }
Run Code Online (Sandbox Code Playgroud)
我正在 AWS 控制台中运行 CloudFormation 模板。
我从使用 IAM 资源的模板开始,控制台会在直接运行堆栈时提示我确认 IAM 功能。
然后我尝试从父堆栈调用相同的堆栈,但没有收到相同的提示。
然后堆栈失败并显示以下消息:
需要能力:[CAPABILITY_IAM]
文档表明我可以通过多种方式运行 CF 脚本。有很多关于 CLI/API 和提供功能参数的文档,但似乎没有关于如何确保在通过控制台运行时应用它的信息。
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html
AWS CloudFormation 模板中的 IAM 资源
我现在通过论坛提出了一个问题,但没有回应(还):https : //forums.aws.amazon.com/thread.jspa?threadID=139160
我怀疑这是控制台中的一个错误,因为似乎没有任何关于如何通过控制台更改行为的文档,据我所知,这应该可以正常工作。
任何人都遇到过同样的问题,或者可以报告它对他们来说工作正常吗?
TL;DR - CloudFormation 模板是否可以将特定 ELB 的子网特定内部 IP 地址插入到该子网内实例的 UserData 中?
我们在 Amazon VPC 中拥有一组 EC2 Web 服务器,其中有六个子网,一个私有的和一个公共的,跨越 EU-West-1 的三个可用区中的每一个。所有服务器都配置了 CloudFormation。
我们想配置 Apache 的 mod_rpaf 来记录X-Forwarded-For标题(我们可以更改 LogFormat,但这并不容易转换为 PHP 或 Apache 错误日志;RPAF 对我们来说是最好的解决方案)。
据我所知,ELB 的架构方式意味着它在每个配置的可用区中都有一个“脚”,如果 ELB 被拆除或重新创建,这可能会改变。
Ubuntu 12.04 存储库中的 mod_rpaf 版本似乎尚未更新以允许该ProxyIPS指令使用 CIDR 表示法,并且理论上 ELB 的 IP 地址可以是我们三个公共子网中的任何地址。
剩下的一个解决方案是通过 Puppet 配置模块,使用实例的 UserData 生成的 hieradata。我知道在某种程度上您可以在 CloudFormation 模板中插入引用和变量,但我不确定是否可以有效地说“给我这个子网中这个 ELB 的私有 IP 地址”。
amazon-ec2 amazon-web-services amazon-elb amazon-cloudformation
在我在aws ec2上使用的vpc中,默认情况下不会获得公共IP地址。我正在尝试在参考此文档和这一点文档后手动添加一个。
目前我的cloudformation模板包括
"netinterface" : {
"Type" : "AWS::EC2::NetworkInterface",
"Properties" : {
"SubnetId" : {"Ref": "Subnet"}
}
},
"billingattributionapi" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"NetworkInterfaces" : [
{
"AssociatePublicIpAddress" : "true",
"DeviceIndex" : "eth0",
"NetworkInterfaceId" : {"Ref" : "netinterface"},
"DeleteOnTermination" : "true"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
省略了很多,但这就是与添加 ip 相关的所有内容。
我的问题是,文档说只有 DeviceIndex 为 eth0 的网络接口才能拥有公共 IP 地址,但使用 eth0 会导致错误:
Encountered non numeric value for property DeviceIndex
Run Code Online (Sandbox Code Playgroud)
但是如果我将设备 ID 设置为 0 我会得到
The associatePublicIPAddress parameter …Run Code Online (Sandbox Code Playgroud) 我想使用托管在 ECR 上的 docker 映像,并且我想使用 cloudformation 模板自动执行拉取操作。
我附加了具有 ECR 对 ec2 实例的完全访问权限的 IAM 角色,但它不起作用。
我正在做docker pull 1234567897.dkr.ecr.us-west-2.amazonaws.com/repo:tag,我收到错误Error response from daemon: Get https://1234567897.dkr.ecr.us-west-2.amazonaws.com/repo:tag/manifests/latest: no basic auth credentials
amazon-ec2 amazon-web-services amazon-cloudformation amazon-ecs
我正在尝试定义一个 Cassandra 节点集群,以及一些其他实例(一些中间件和应用程序服务器)。我希望能够将 Cassandra 节点的(内部)IP 地址添加到中间件的配置中,并将第一个 Cassandra 节点的 IP 添加到其他节点的配置中,作为种子节点。我可以完全从模板中实现这一点吗?(在AMI中调用脚本是可以的,集中配置或平台没有提供的任何类型的远程数据库都不是)
谢谢!安德拉斯
编辑:我忘了提到我还需要使用实例的 IP 更新相关的安全组。
我有一个可以正常工作的 CloudFormation 模板,它创建了一个 AWS 实例 2 EBS 卷。卷在机器上通过 lsblk 可见。我只是在格式化和安装它们时遇到了麻烦。就好像 UserData 脚本根本没有运行一样。
这是一台 Ubuntu 14.04 机器。知道我可能做错了什么吗?
编辑:添加完整模板以供参考
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": ".",
"Parameters": {
"KeyName": {
"Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance",
"Type": "AWS::EC2::KeyPair::KeyName",
"ConstraintDescription": "must be the name of an existing EC2 KeyPair.",
},
"InstanceType": {
"Description": "EC2 instance type",
"Type": "String",
"Default": "t2.medium",
"AllowedValues": [
"t2.micro",
"t2.small",
"t2.medium",
"c3.large",
"c3.xlarge",
"c4.large",
"c4.xlarge"
],
"ConstraintDescription": "must be a valid EC2 instance …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的 CF 模板,用于创建 EC2 实例。密钥对被指定为参数。我希望自动填充可能的密钥对列表。
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: eu-west-2a
ImageId: ami-0e80a462ede03e653
InstanceType: t3.nano
KeyName: !Ref SSHKey
Parameters:
SSHKey:
Type: String
Description: name of the key pair to ssh into the instance
AllowedValues:
# populate automatically
Run Code Online (Sandbox Code Playgroud)
如何使用 CloudFormation 检索部署模板的区域中的密钥对列表?