我有一个使用多容器 Docker 配置部署到 Elastic Beanstalk 的应用程序,该应用程序由 ECS 支持,并由 EC2 进一步支持。当我通过 SSH 连接到 EC2 实例时,是否可以运行一些命令来识别其运行所在的 EB 应用程序/环境的名称?有没有像
aws elasticbeanstalk get-current-environment
这样的东西?
EB 环境名称和 ID 存在于您的实例标签中。您可以运行 AWS CLI:
aws ec2 describe-tags
来获取环境名称。标签键为:
请注意:您需要将 IAM 角色附加到具有
ec2:DescribeTags
权限的实例才能使此命令发挥作用。
您可以使用实例元数据服务(IMDS):
[ec2-user@ip-10-231-25-159 current]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data
这将返回您可以请求的各种资源:
ami-id
ami-launch-index
ami-manifest-path
autoscaling/
block-device-mapping/
events/
hostname
iam/
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
system
如果您的实例有公共 SSH 密钥,您可以使用
http://169.254.169.254/latest/meta-data/public-keys
端点:
[ec2-user@ip-10-231-25-159 current]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" aws-ec2-metadata-token-ttl-seconds: 21600"` && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys
在我的例子中,这将返回公钥名称:
0=my-key-name
当然,这不会返回实际的 EB 环境名称。但是,如果您的环境有单独的 SSH 密钥,则可以从 SSH 密钥名称推断当前环境名称。
我也是AWS的初学者,但我相信你能够进入:
eb状态
这将显示:
环境详情:xxxx
应用名称:xxxx
区域:us-east-1
部署版本:app-xxxxx
环境ID:xxxxx
平台:在 64 位 Amazon Linux/2.6.5 上运行的 xxxx/Python 2.7
层:WebServer-Standard-1.0
CNAME:xxxxxxxx.us-east-1.elasticbeanstalk.com
更新时间:2018-04-13 19:10:45.354000+00:00
状态:准备就绪
健康:绿色