
Twitter API Key 的 OAuth 認(rèn)證與授權(quán)機(jī)制
> 核心關(guān)鍵詞:AWS EC2 API、創(chuàng)建 EC2 實(shí)例、自動(dòng)化啟動(dòng)實(shí)例、Boto3 run_instances
AWS 提供多種調(diào)用 EC2 API 的方式:
pip install boto3
在 ~/.aws/credentials
中配置 IAM 憑證:
[default]
aws_access_key_id = YOUR_KEY_ID
aws_secret_access_key = YOUR_SECRET
region = us-west-2
> 長(zhǎng)尾關(guān)鍵詞:AWS CLI 創(chuàng)建 EC2 實(shí)例、Terraform EC2 自動(dòng)化
import boto3
ec2 = boto3.client('ec2')
response = ec2.run_instances(
ImageId='ami-0abcdef1234567890', # Linux/UNIX AMI
InstanceType='t3.micro', # 實(shí)例規(guī)格
MinCount=1, MaxCount=1, # 創(chuàng)建 1 臺(tái)
KeyName='my-keypair', # SSH 密鑰對(duì)
TagSpecifications=[{
'ResourceType':'instance',
'Tags':[{'Key':'Name','Value':'API-Created-Instance'}]
}]
)
instance_id = response['Instances'][0]['InstanceId']
print("已創(chuàng)建實(shí)例:", instance_id)
> 相關(guān)關(guān)鍵詞:Boto3 run_instances 示例、實(shí)例標(biāo)簽 TagSpecifications
import time
while True:
inst = ec2.describe_instances(InstanceIds=[instance_id])['Reservations'][0]['Instances'][0]
state = inst['State']['Name']
if state == 'running':
ip = inst.get('PublicIpAddress')
print("實(shí)例啟動(dòng)完成,公共IP:", ip)
break
print("當(dāng)前狀態(tài):", state, ",等待中...")
time.sleep(5)
了解底層請(qǐng)求簽名有助于排查問題:
curl "https://ec2.amazonaws.com/?Action=RunInstances&ImageId=ami-0abcdef1234567890&InstanceType=t3.micro&MinCount=1&MaxCount=1&Version=2016-11-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=YOUR_KEY%2F20250715%2Fus-west-2%2Fec2%2Faws4_request&X-Amz-Date=20250715T080000Z&X-Amz-SignedHeaders=host&X-Amz-Signature=SIGNATURE"
> 相關(guān)關(guān)鍵詞:EC2 Query API 簽名、AWS Signature V4 調(diào)用
ec2.run_instances(
...,
SubnetId='subnet-0123456789abcdef0',
SecurityGroupIds=['sg-0123456789abcdef0']
)
ec2.run_instances(
...,
BlockDeviceMappings=[{
'DeviceName': '/dev/sdh',
'Ebs': {'VolumeSize': 20, 'VolumeType': 'gp3'}
}]
)
botocore.exceptions.ClientError
并重試logging
模塊跟蹤操作結(jié)果provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "web" {
ami = "ami-0abcdef1234567890"
instance_type = "t3.micro"
key_name = "my-keypair"
tags = { Name = "TerraformInstance" }
count = 1
}
name: Deploy EC2
on: push
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Terraform Apply
uses: hashicorp/terraform-github-actions@v1
with:
tf_actions_working_dir: ./infra
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET }}
問題 | 建議 |
---|---|
AuthFailure 身份驗(yàn)證失敗 |
檢查 AWS 憑證、系統(tǒng)時(shí)間與區(qū)域設(shè)置 |
InvalidAMIID.NotFound AMI 無效 |
確認(rèn) AMI ID 是否在當(dāng)前區(qū)域可用 |
InsufficientInstanceCapacity |
切換實(shí)例規(guī)格或區(qū)域,或稍后重試 |
公網(wǎng) IP 未分配 | 確保子網(wǎng)啟用 Public IP 分配 |
原文引自YouTube視頻:https://www.youtube.com/watch?v=YH_DVenJHII
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)