dar*_*0rd 7 amazon-ec2 amazon-web-services amazon-elastic-ip security-groups
我在 VPC 不同的安全组中有两个实例,每个实例都有自己的公共 IP。我希望实例一能够连接到其公共 IP 上的实例二。我发现授予对安全组的访问权限,只允许访问私有 IP,而不是公共 IP。
我现在已经定义了我的安全组,以允许访问位于其他安全组中的实例的公共 IP。但是,这很不方便,因为我无法轻松自动执行此操作(想想 Ansible),因为我首先需要查找 DNS 名称,然后才能将其添加到组中。
有谁知道这样做的更简单的方法?
总结一下:
实例 1 需要访问其公共 IP 上的实例 2。我目前最终不得不手动查找实例 1 的 IP,然后将其添加到实例 2 的安全组中。
恐怕一旦您使用公共 IP,您就不能再使用安全组 ID作为目标 SG 中的源。这仅适用于私有 IP。
但是,如果您通过 Ansible创建实例 1,则可以使用实例的Ansible 事实来获取其公共 IP 并将其设置为实例 2 SG 中的源。这样的事情应该做:
- name: Create Instance 1
ec2:
key_name: mykey
instance_type: t2.micro
image: ami-123456
wait: yes
assign_public_ip: yes <<< Assign Public IP
register: ec2
Run Code Online (Sandbox Code Playgroud)
然后您可以将其作为源添加到Instance 2 Security Group:
- name: Instance 2 SG
ec2_group:
name: ...
rules:
- proto: tcp
ports:
- 80
cidr_ip: "{{ ec2.instances.public_ip }}" <<< Use it here
Run Code Online (Sandbox Code Playgroud)
沿着这些路线的东西应该可以让您使用 Ansible 进行自动化。
希望有帮助:)
通常,您会创建一个命名安全组,将其附加到这些实例,然后添加一条引用该安全组作为源并允许所需目标端口的规则。
最终图片:
created security group。created security group入站从created security group到 的规则destination port you need所以基本上连一个ip都不需要,并且可以通过将安全组附加到需要访问的资源来控制允许/拒绝。此方法也适用于动态环境(例如自动缩放)。
| 归档时间: |
|
| 查看次数: |
4733 次 |
| 最近记录: |