AWScurl笔记
摘要
AWScurl是一款专为与AWS服务交互设计的命令行工具,它模拟了curl的功能并添加了AWS签名版本4的支持。这一特性使得用户能够安全有效地执行带有AWS签名的请求,极大地提升了与AWS服务交互时的安全性和有效性。
GitHub - okigan/awscurl: curl-like access to AWS resources with AWS Signature Version 4 request signing.curl-like access to AWS resources with AWS Signature Version 4 request signing. - okigan/awscurlhttps://github.com/okigan/awscurlhttps://github.com/okigan/awscurl
一、AWScurl入门与基础操作
1.1 AWScurl概述
AWScurl是一款专为与AWS服务交互设计的命令行工具,它模拟了curl的功能并添加了AWS签名版本4的支持。这一特性使得用户能够安全有效地执行带有AWS签名的请求,极大地提升了与AWS服务交互时的安全性和有效性。AWScurl的设计初衷是为了简化开发者在使用AWS API时的操作流程,同时保证数据传输的安全性。它适用于各种场景,无论是开发测试还是生产环境下的自动化脚本编写,都能发挥重要作用。
1.2 工具安装与配置
安装步骤
- Python环境准备:由于AWScurl基于Python开发,因此首先需要确保系统中已安装Python环境。推荐使用Python 3.x版本。
- 安装AWScurl:可以通过pip命令直接安装AWScurl,命令如下:
pip install awscurl
配置AWS凭证
为了使AWScurl能够正确地为请求生成签名,需要配置AWS访问密钥(Access Key ID)和秘密访问密钥(Secret Access Key)。可以通过以下几种方式之一来设置这些凭证:
- 环境变量:设置
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量。 - 配置文件:创建一个名为
~/.aws/credentials
的文件,并在其中添加如下内容:[default]aws_access_key_id = YOUR_ACCESS_KEYaws_secret_access_key = YOUR_SECRET_KEY
- 命令行参数:在运行awscurl命令时直接传递访问密钥和秘密访问密钥作为参数。
其他可选配置
- 区域:指定AWS服务所在的区域,可以通过
--region
参数设置。 - 端点URL:如果需要连接到特定的端点URL,可以使用
--endpoint-url
参数指定。
1.3 基本命令使用说明
基础用法
AWScurl的基本使用方法类似于curl,但增加了AWS签名相关的选项。下面是一个简单的示例,用于向bedrock发送post请求:
awscurl -v -i \
--request POST \
--service bedrock https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-3-5-sonnet-20241022-v2:0/converse \
--data '{"messages":[{"role":"user","content":[{"text":"Provide general steps to debug a BSOD on a Windows laptop."}]}],"system":[{"text":"You are a tech support expert who helps resolve technical issues. Signal SUCCESS if you can resolve the issue, otherwise FAILURE"}],"inferenceConfig":{"stopSequences":["SUCCESS","FAILURE"]},"additionalModelRequestFields":{"top_k":200}}'
常用选项
- -v 输出debug信息
--service
: 指定AWS服务类型,例如s3
、ec2
等。--region
: 指定AWS服务所在的区域。--request
: 指定HTTP请求方法,默认为GET
。--data
: 发送POST请求时携带的数据。--headers
: 添加自定义HTTP头。
更详细参数请参考:
[root@localhost build]# awscurl -h
usage: awscurl [-h] [-v] [-i] [-X REQUEST] [-d DATA] [-H HEADER] [-k]
[--fail-with-body] [--data-binary] [--region REGION]
[--profile PROFILE] [--service SERVICE]
[--access_key ACCESS_KEY] [--secret_key SECRET_KEY]
[--security_token SECURITY_TOKEN]
[--session_token SESSION_TOKEN] [-L] [-o <file>]
uri
Curl AWS request signing
positional arguments:
uri
optional arguments:
-h, --help show this help message and exit
-v, --verbose verbose flag (default: False)
-i, --include include headers in the output (default: False)
-X REQUEST, --request REQUEST
Specify request command to use (default: GET)
-d DATA, --data DATA HTTP POST data (default: )
-H HEADER, --header HEADER
HTTP header (default: None)
-k, --insecure Allow insecure server connections when using SSL
(default: False)
--fail-with-body Fail on HTTP errors but save the body (default: False)
--data-binary Process HTTP POST data exactly as specified with no
extra processing whatsoever. (default: False)
--region REGION AWS region [env var: AWS_DEFAULT_REGION] (default: us-
east-1)
--profile PROFILE AWS profile [env var: AWS_PROFILE] (default: default)
--service SERVICE AWS service (default: execute-api)
--access_key ACCESS_KEY
[env var: AWS_ACCESS_KEY_ID] (default: None)
--secret_key SECRET_KEY
[env var: AWS_SECRET_ACCESS_KEY] (default: None)
--security_token SECURITY_TOKEN
[env var: AWS_SECURITY_TOKEN] (default: None)
--session_token SESSION_TOKEN
[env var: AWS_SESSION_TOKEN] (default: None)
-L, --location Follow redirects (default: False)
-o <file>, --output <file>
Write to file instead of stdout (default: )
In general, command-line values override environment variables which override
defaults.