首页 > 解决方案 > 如何访问 EC2 实例元数据服务?从 EC2 外部

问题描述

使用 AWS 云手表的以下配置:

awslogs.conf

[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 2500
log_group_name = /var/log/messages
log_stream_name = {cluster}{instance_id}

以下脚本与命令--userdata选项一起使用aws ec2

用户数据.sh

# Above agentlogs.conf file is copied to /etc/awslogs/awslogs.conf in AWS EC2 instance


# Configure cloudwatch  config file
cat > /etc/cloudwatch-logs.ini <<EOF
[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 2500
log_stream_name = {cluster}{instance_id}
initial_position = start_of_file
log_group_name = /var/log/messages
EOF

从此脚本启动 EC2(在 EC2 外部运行):

spin_up_ec2.sh

# Using AWS CLI,  we spin up EC2 instance using userdata.sh, 
# Using metadata service How to read values of {cluster} & {instance_id} syntax, shown above:

aws logs describe-log-streams --log-group-name /var/log/messages --log-stream-name-prefix <grab_cluster_name_value><grab_instance_id_value> --region us-east-1

spin_up_ec2.sh位于 EC2 之外,在同一个 VPC 中,在不同的子网中。那么,不确定如何利用 EC2 元数据服务?

EC2 在私有子网中运行。

{cluster}价值将类似于clust1

{instance_id}价值将类似于i-1a52627268bc


1)

shell script( spin_up_ec2.sh) 客户端如何与 EC2 元数据服务通信,以检索{cluster}&的值{instance_id}

2)

在公共子网中启动 EC2 有用吗?与元数据服务对话

标签: amazon-web-servicesamazon-ec2aws-cliamazon-cloudwatchamazon-cloudwatchlogs

解决方案


Amazon EC2 实例元数据在实例之外不可用。

您可以对 AWS 服务进行 API 调用以获取类似信息(例如检索 EC2 实例所在的子网)。


推荐阅读