有没有办法为从 CloudFormation 模板参数派生的常用值定义快捷方式?
例如-我有一个创建了ELB名字多AZ项目组的脚本project和ELB后面两个实例叫project-1和project-2。我只将ELBHostName参数传递给模板,然后使用它来构造:
"Fn::Join": [
".", [
{ "Fn::Join": [ "", [ { "Ref": "ELBHostName" }, "-1" ] ] },
{ "Ref": "EnvironmentVersioned" },
{ "Ref": "HostedZone" }
]
]
Run Code Online (Sandbox Code Playgroud)
这种结构或非常相似的结构在整个模板中重复多次 - 以创建 EC2 主机名、Route53 记录等。
而不是一遍又一遍地重复,我想将它的输出分配Fn::Join给某种变量并且只引用它,就像我可以用"Ref":语句一样。
理想情况下是这样的:
Var::HostNameFull = "Fn::Join": [ ... ]
...
{ "Name": { "Ref": "Var::HostNameFull" } }
Run Code Online (Sandbox Code Playgroud)
或类似简单的东西。
使用 Amazon CloudFormation 可以吗?
我是网络和所有这些 DNS 方面的新手。
我有以下问题
请帮助/指导我解决这个问题。
我已经阅读了Authoritative Nameserver,但我无法清楚地理解它。可以用一些简单的术语解释我吗?
我想创建我的 AWS EC2 服务器的 ISO,以便我可以将其用作本地计算机上的开发测试环境。这可能吗?
我们有一个用于创建一些 EC2 实例的 AWS CloudFormation 模板。然而,其中一些需要特定的PrivateIpAddress,我正在努力弄清楚如何将其合并到模板中。
现在我有一个模板参数PrivateIP和一个创建条件RequestedPrivateIP。到现在为止还挺好。但是我不知道如何将它合并到AWS::EC2::Instance资源规范中。我试过这个:
"PrivateIpAddress": {
"Fn::If": [ "RequestedPrivateIP",
{ "Ref": "PrivateIP" },
"" <-- This doesn't work
]
},
Run Code Online (Sandbox Code Playgroud)
但是当RequestedPrivateIP是 false时失败了
CREATE_FAILED AWS::EC2::Instance NodeInstance Invalid addresses: []
Run Code Online (Sandbox Code Playgroud)
知道如何有选择地分配静态私有 IP,如果未指定,则将其留给 AWS 来设置动态私有 IP?
我在 c5d.2xlarge 硬件上使用来自 AWS 的 Ubuntu 16.04 EC2。它配备了一个 200 GB 的 SSD,称为/dev/nvme1n1.
我可以使用以下方法安装此驱动器:
$ sudo mkfs.ext4 -E nodiscard /dev/nvme1n1
$ sudo mount -o discard /dev/nvme1n1 /home/ubuntu
Run Code Online (Sandbox Code Playgroud)
为了尝试让它自动挂载,我还添加了/etc/fstab:
/dev/nvme1n1 /home/ubuntu/spda ext4 defaults,users,nofail,discard 0 2
Run Code Online (Sandbox Code Playgroud)
我的问题:
当我停止/启动实例时,它似乎不会自动挂载。我不知道如何修复/调试。
当我手动挂载它时,创建的文件夹属于根目录,我无法以用户身份访问它。
我的目标是能够启动实例并且已经安装了驱动器并且用户可以访问。
我现在设置了一个可扩展的负载均衡器,主要遵循这个模板:
https://github.com/satterly/AWSCloudFormation-samples/blob/master/LAMP_Multi_AZ.template
将AWS::AutoScaling::AutoScalingGroup.CreationPolicy.ResourceSignal.Count键调整为0(基本上允许在未收到成功信号的情况下加载堆栈)后,我能够加载堆栈,并且可以看到所有可用资源。
我可以看到正在创建的密钥的公共 DNS,但我无法通过 SSH 连接到实例。
我对实例规则中的每个人都有开放的 SSH 访问权限,我可以在 AWS 控制台中确认这一点。
我还按照官方 AWS 文档中的建议为我的 VPC 配置了一条路由:https : //aws.amazon.com/premiumsupport/knowledge-center/ec2-linux-ssh-troubleshooting/
我可以看到实例存在,但似乎我限制了自己在某处的访问。但是,在 AWS EC2 控制台中,设置看起来与我能够通过 SSH 连接到实例时相同。
这是我正在使用的 JSON 模板,您可以在其中查看我的所有设置,包括我的 VPC、子网、安全组等:https : //gist.github.com/dambrogia/e4cd93a64ae6f3a79d4a58d466f144f8
我从以下命令收到超时错误:(我的id_rsa密钥在 ec2 内有效)
ssh -i ~/.ssh/id_rsa ec2-user@<ec2_instance>
Run Code Online (Sandbox Code Playgroud)
load-balancing amazon-ec2 amazon-web-services amazon-cloudformation
我正在一个共享的 AWS 账户中设置几个 EC2 实例,并希望让它们相互访问。同时我想禁止账户中其他实例的访问。
我创建了一个安全组并添加了来自“我的 IP”的 SSH 访问权限以进行登录,并且效果很好。
现在我需要在所有实例之间进行 SSH连接,但即使它们都在同一个安全组中,我也不能。
我怎样才能做到这一点?
如何将文件上传到我的 AWS S3 存储桶 CloudFormation 模板?
AWSTemplateFormatVersion: '2010-09-09'
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: PublicRead
BucketName: s3bucketuser
VersioningConfiguration:
Status: Enabled
Run Code Online (Sandbox Code Playgroud) 我一直怀疑我在一个t3.micro实例上收听的 websocket 提要被同一管理程序下其他实例的 cpu 窃取时间所抑制。
所以我切换到一个c5d.large实例,并且肯定注意到延迟更少。但现在我很好奇……我的CPU 信用图在 EC2 监控部分消失到哪里了?
不要c5d.large实例没有CPU学分出于某种原因?如果没有,为什么不呢?
我在 VPC 不同的安全组中有两个实例,每个实例都有自己的公共 IP。我希望实例一能够连接到其公共 IP 上的实例二。我发现授予对安全组的访问权限,只允许访问私有 IP,而不是公共 IP。
我现在已经定义了我的安全组,以允许访问位于其他安全组中的实例的公共 IP。但是,这很不方便,因为我无法轻松自动执行此操作(想想 Ansible),因为我首先需要查找 DNS 名称,然后才能将其添加到组中。
有谁知道这样做的更简单的方法?
总结一下:
实例 1 需要访问其公共 IP 上的实例 2。我目前最终不得不手动查找实例 1 的 IP,然后将其添加到实例 2 的安全组中。
amazon-ec2 amazon-web-services amazon-elastic-ip security-groups
amazon-ec2 ×6
cpu-usage ×1
linux ×1
nameserver ×1
nvme ×1
ssd ×1
ssh ×1
ubuntu-16.04 ×1
vcpu ×1