我已使用 AWS 创建了一个免费套餐账户,并按照 AWS CLI 2.0 文档来运行 EC2 VPC 实例。我已经创建了一个 AWS 根用户、一个 IAM 用户及其访问密钥以及 EC2 密钥对。
我在 https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2-instances.html中看到以下命令:
aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-903004f8 --subnet-id subnet-6e7f829e
我想知道如何找出以下选项的值
--image-id
、--instance-type
、-subnet-id
,这些选项可供我的 AWS 账户和 IAM 用户使用?
您可以通过 Web 控制台找到这些值,但您在 AWS 中可以执行的所有操作也可以通过 API 执行,并且大多数操作也可以使用 CLI 执行。根据 https://aws.amazon.com/free/?nc1=h_ls&all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types= *all&awsf.Free%20Tier%20Categories=*all 免费套餐仅提供
t2.micro
或 t3.micro
实例类型,但您仍然可以列出所有实例类型以查看更详细的信息。有趣的是,现在我只得到 t1.micro 和 t2.micro 作为 FreeTierEligible=true
过滤器的输出 - 请参阅文本下方的示例。
对于子网:
describe-subnets
[--filters <value>]
[--subnet-ids <value>]
[--dry-run | --no-dry-run]
[--cli-input-json <value>]
[--starting-token <value>]
[--page-size <value>]
[--max-items <value>]
[--generate-cli-skeleton <value>]
示例:
aws --region us-east-1 --output=json ec2 describe-subnets
输出:
{
"Subnets": [
{
"AvailabilityZone": "us-east-1b",
"AvailabilityZoneId": "use1-az4",
"AvailableIpAddressCount": 4091,
"CidrBlock": "172.31.0.0/20",
"DefaultForAz": true,
"MapPublicIpOnLaunch": true,
"MapCustomerOwnedIpOnLaunch": false,
"State": "available",
"SubnetId": "subnet-xxxxx",
"VpcId": "vpc-xxxxx",
"OwnerId": "xxxxxxxx",
"AssignIpv6AddressOnCreation": false,
"Ipv6CidrBlockAssociationSet": [],
"SubnetArn": "arn:aws:ec2:us-east-1:xxxxxxxx:subnet/subnet-xxxxx",
"EnableDns64": false,
"Ipv6Native": false,
"PrivateDnsNameOptionsOnLaunch": {
"HostnameType": "ip-name",
"EnableResourceNameDnsARecord": false,
"EnableResourceNameDnsAAAARecord": false
}
},
我可以使用类似
jq
的内容来仅过滤掉子网 ID:
aws --region us-east-1 --output=json ec2 describe-subnets | jq ".Subnets[].SubnetId"
"subnet-aaaaaaaa"
"subnet-bbbbbbbb"
"subnet-cccccccc"
实例类型:
https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-type-offerings.html
describe-instance-types
[--dry-run | --no-dry-run]
[--instance-types <value>]
[--filters <value>]
[--cli-input-json <value>]
[--starting-token <value>]
[--page-size <value>]
[--max-items <value>]
示例 - 包括针对符合免费套餐条件的实例类型的过滤器 - 请注意,t1.micro 或 t2.micro 实例只有 750 个免费套餐小时,因此您可以运行一个实例一个月或其中四个实例运行一周:
aws --region us-east-1 --output=json ec2 describe-instance-types --filters Name=free-tier-eligible,Values=true
输出:
{
"InstanceTypes": [
{
"InstanceType": "t2.micro",
"CurrentGeneration": true,
"FreeTierEligible": true,
"SupportedUsageClasses": [
"on-demand",
"spot"
],
"SupportedRootDeviceTypes": [
"ebs"
],
"SupportedVirtualizationTypes": [
"hvm"
],
"BareMetal": false,
"Hypervisor": "xen",
"ProcessorInfo": {
"SupportedArchitectures": [
"i386",
"x86_64"
],
"SustainedClockSpeedInGhz": 2.5
},
"VCpuInfo": {
"DefaultVCpus": 1,
"DefaultCores": 1,
"DefaultThreadsPerCore": 1
},
"MemoryInfo": {
"SizeInMiB": 1024
},
"InstanceStorageSupported": false,
"EbsInfo": {
"EbsOptimizedSupport": "unsupported",
"EncryptionSupport": "supported",
"NvmeSupport": "unsupported"
},
"NetworkInfo": {
"NetworkPerformance": "Low to Moderate",
"MaximumNetworkInterfaces": 2,
"MaximumNetworkCards": 1,
"DefaultNetworkCardIndex": 0,
"NetworkCards": [
{
"NetworkCardIndex": 0,
"NetworkPerformance": "Low to Moderate",
"MaximumNetworkInterfaces": 2
}
],
"Ipv4AddressesPerInterface": 2,
"Ipv6AddressesPerInterface": 2,
....this is very long try it for yourself
从实例类型中,您可能希望使用
SupportedRootDeviceTypes
值进行下一个查询:
描述图像:
https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html
describe-images
[--executable-users <value>]
[--filters <value>]
[--image-ids <value>]
[--owners <value>]
[--include-deprecated | --no-include-deprecated]
[--dry-run | --no-dry-run]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
示例:
aws --region us-east-1 --output=json ec2 describe-images --owners self amazon --filters "Name=root-device-type,Values=ebs"
输出:
{
"Images": [
{
"Architecture": "x86_64",
"CreationDate": "2021-10-01T06:33:39.000Z",
"ImageId": "ami-03ed02f0f58f6da3b",
"ImageLocation": "amazon/amzn-ami-minimal-pv-2018.03.0.20211001.0-x86_64-ebs",
"ImageType": "machine",
"Public": true,
"KernelId": "aki-5c21674b",
"OwnerId": "137112412989",
"PlatformDetails": "Linux/UNIX",
"UsageOperation": "RunInstances",
"State": "available",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": true,
"SnapshotId": "snap-0e7ecc707162605a2",
"VolumeSize": 2,
"VolumeType": "standard",
"Encrypted": false
}
}
],
"Description": "Amazon Linux AMI 2018.03.0.20211001.0 x86_64 Minimal PV ebs",
"EnaSupport": true,
"Hypervisor": "xen",
"ImageOwnerAlias": "amazon",
"Name": "amzn-ami-minimal-pv-2018.03.0.20211001.0-x86_64-ebs",
"RootDeviceName": "/dev/sda1",
"RootDeviceType": "ebs",
"SriovNetSupport": "simple",
"VirtualizationType": "paravirtual",
"DeprecationTime": "2023-10-01T06:33:39.000Z"
},