我想使用Bash列出我的EC2实例的公共IP地址,用分隔符(空格或换行符)分隔.
我试图管道输出到JQ有aws ec2 describe-instances | jq,但似乎不能只是孤立的IP地址.
这可以aws单独完成,指定参数jq或完全不同的东西吗?
aws cloudformation --region ap-southeast-2 describe-stacks --stack-name mystack
Run Code Online (Sandbox Code Playgroud)
它返回结果OK:
{
"Stacks": [
{
"StackId": "arn:aws:mystackid",
"LastUpdatedTime": "2017-01-13T04:59:17.472Z",
"Tags": [],
"Outputs": [
{
"OutputKey": "Ec2Sg",
"OutputValue": "sg-97e13dff"
},
{
"OutputKey": "DbUrl",
"OutputValue": "myUrl"
}
],
"CreationTime": "2017-01-13T03:27:18.893Z",
"StackName": "mystack",
"NotificationARNs": [],
"StackStatus": "UPDATE_ROLLBACK_COMPLETE",
"DisableRollback": false
}
]
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何只返回OutputUall的值,即myUrl
因为我不需要休息,只需我的.
这可能通过aws cloudformation describe-stacks吗?
编辑
我才意识到我可以使用 - 查询:
--query "Stacks[0].Outputs[1].OutputValue"
Run Code Online (Sandbox Code Playgroud)
将得到我想要的,但我想使用DbUrl else如果输出的数量改变,我的结果将是意外的.
我正在运行 alpine 的 docker swarm 管理器节点上安装 aws-cli(Linux 0317632a4ad9 4.9.59-moby #1 SMP Thu Mar 1 20:54:00 UTC 2018 x86_64 Linux)。Alpine 的 aws-cli 包目前列在边缘分支 (1.18.55.r0) 的社区存储库中。我修改了/etc/apk/repositories为针对此 repo。
安装过程中寻找 py3-urllib3,但我解决了这个问题,最后得到了一个没有错误的全新安装,如下所示:
~ $ sudo apk add aws-cli@edge-comm
fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
py3-urllib3-1.25.9-r0:
masked in: @edge
satisfies: py3-botocore-1.16.12-r0[py3-urllib3<1.26]
~ $ sudo apk add py3-urllib3@edge aws-cli@edge-comm
(1/23) Installing groff (1.22.3-r1)
(2/23) Installing py3-six (1.10.0-r6)
(3/23) Installing py3-dateutil (2.6.0-r1)
(4/23) Installing libpng (1.6.37-r0)
(5/23) Installing freetype (2.7.1-r2)
(6/23) Installing libjpeg-turbo (1.5.3-r2)
(7/23) Installing lcms2 …Run Code Online (Sandbox Code Playgroud) 我正在考虑将我的静态网站重新部署到Amazon S3.我需要自动部署,所以我一直在为这些任务寻找API.我对不同的选择感到有点困惑.
问题:s3cmd,Python库boto和AWS CLI有什么区别?
我cd进入所有pem/key文件所在的目录并运行以下命令:
aws iam upload-server-certificate
--server-certificate-name certificate_name
--certificate-body file://webservercertificate.pem
--private-key file://server.key
--certificate-chain file://certificate_chain_file.pem
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
调用UploadServerCertificate操作时发生客户端错误(InvalidClientTokenId):请求中包含的安全令牌无效.
我在"用户"中有1个"用户".该用户已被分配以下权限:
IAMFullAccess IAMReadOnlyAccess IAMUserSSHKeys
Run Code Online (Sandbox Code Playgroud)
我已下载此用户的凭据并将其放入我的用户变量中
AWS_ACCESS_KEY ****
AWS_SECRET_KEY ****
Run Code Online (Sandbox Code Playgroud)
我在弹性豆茎上有1个角色 aws-elasticbeanstalk-ec2-role
我正在尝试利用 AWS CLI 和forbash 中的循环来迭代清除多个 SQS 消息队列。bash 脚本几乎按预期工作,我遇到的问题是每次 AWS CLI 发送请求时的返回值。当请求成功时,它返回一个空值并在命令行中打开一个交互式寻呼机。然后我必须手动输入q以退出交互式屏幕并允许for循环继续下一次迭代。当尝试清除大量队列时,这变得非常乏味和耗时。
有没有办法配置 AWS CLI 以禁用此交互式寻呼机为每个返回值弹出?或者将返回值通过管道传输到单独的文件而不是显示的方法?
我玩过配置不同的返回值类型(文本、yaml、JSON)但没有任何运气。此外,该--no-pagination参数不会改变行为。
这是我尝试运行的 bash 脚本示例:
for x in 1 2 3; do
aws sqs purge-queue --queue-url https://sqs.<aws-region>.amazonaws.com/<id>/<env>-$x-<queueName>.fifo;
done
Run Code Online (Sandbox Code Playgroud) 我试图在Linux Mint 17.2 Rafaela上使用pip3安装awscli.
我收到错误:
Traceback (most recent call last):
File "/home/jonathan/.local/bin/aws", line 19, in <module>
import awscli.clidriver
ImportError: No module named 'awscli'
Run Code Online (Sandbox Code Playgroud)
这些是我正在采取的步骤,遵循aws安装指南:
sudo pip install awscli --upgrade --user
Run Code Online (Sandbox Code Playgroud)
一切似乎安装得很好.
添加到我的.bashrc
export PATH=~/.local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
然后
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
然后我尝试命令
aws --version
Run Code Online (Sandbox Code Playgroud)
我明白了
Traceback (most recent call last):
File "/home/jonathan/.local/bin/aws", line 19, in <module>
import awscli.clidriver
ImportError: No module named 'awscli'
Run Code Online (Sandbox Code Playgroud)
有人能帮忙吗?
编辑:对于访问此问题的任何人.我无法测试任何这些答案,因为我已经删除了这个操作系统并安装了Ubuntu.此外,我不再需要awscli了.
我试图将awscli_v2放入一个基于 alpine 的docker容器中,发现它失败并显示以下错误消息:
/aws/install: line 78: /aws/dist/aws: not found
考虑到文件本身就在那里并且可以用 ls 列出,我猜想可执行文件所./aws/dist/aws依赖的某些库在 alpine 上不存在。有人知道可能是哪些图书馆吗?
有没有办法在AWS Lambda中执行aws-cli?它似乎没有预先安装.(我通过Node.js子进程检查了"which aws",但它不存在.)
我想从我的s3 下载一个目录.
当我需要一个文件时,s3管理控制台(aws web控制台)允许我下载它,但是当一个目录时,我必须使用aws-cli,如:
$ aws s3 cp s3://mybucket/mydirectory/ . --recursive
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法s3://mybucket/mydirectory/从s3管理控制台获取s3 uri()?
它的URL可用,但它与aws-cli所需的s3 URI略有不同.我找不到任何菜单来获取uri.
先感谢您!
aws-cli ×10
amazon-s3 ×2
bash ×2
alpine-linux ×1
amazon-ec2 ×1
amazon-iam ×1
amazon-sqs ×1
aws-lambda ×1
boto ×1
jq ×1
pip ×1
python-3.x ×1
s3cmd ×1