aliyuncli☞安装和基本调用

阅读量: zyh 2021-06-10 14:05:02
Categories: > Tags:

前言

aliyun cli指令还不是太完善,并不是完全支持所有的阿里云产品,对标的是awscli

因此,建议时刻关注 https://github.com/aliyun/aliyun-cli/releases 产品变化页面。

安装

wget 'https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz'
tar xf aliyun-cli-linux-latest-amd64.tgz

💁近期的重要变化

3.0.40 - 3.0.42版本加入配置变量

ALIBABACLOUD_ACCESS_KEY_ID, ALICLOUD_ACCESS_KEY_ID

ALIBABACLOUD_ACCESS_KEY_SECRET, ALICLOUD_ACCESS_KEY_SECRET

ALIBABACLOUD_REGION_ID, ALICLOUD_REGION_ID

单用户授权配置

# 查看当前配置
aliyun configure list
Profile             | Credential         | Valid   | Region           | Language
---------           | ------------------ | ------- | ---------------- | --------
default             | AK:***             | Invalid |                  | en
ecsRamRoleProfile * | EcsRamRole:gitlab  | Valid   | cn-zhangjiakou   | en
# 切换配置
aliyun configure set --profile <profile_name>
# 添加配置,例如 ecsramrole 模式
# https://help.aliyun.com/document_detail/121193.html?spm=a2c4g.11186623.3.4.35af3ae51h8w8M
aliyun configure set \ 
  --profile ecsRamRoleProfile \
  --mode EcsRamRole \
  --ram-role-name RoleName \
  --region cn-hangzhou

全局用户授权配置(role模式)

cat << 'EOF'| sudo tee /etc/profile.d/ecs_role.sh
Region=`curl -sq http://100.100.100.200/latest/meta-data/region-id`
ramRoleName=`curl -sq http://100.100.100.200/latest/meta-data/ram/security-credentials/`
aliyun configure set --profile ecsRamRoleProfile  --mode EcsRamRole --ram-role-name ${ramRoleName} --region ${Region}
EOF

✨通过访问curl -sq 'http://100.100.100.200/latest/meta-data/ram/security-credentials/<ram_role_name>'可以获取到临时token。临时授权信息如下:

{
  "AccessKeyId" : "STS.abcde",
  "AccessKeySecret" : "abcde12345",
  "Expiration" : "2022-03-28T08:50:26Z",
  "SecurityToken" : "abcde1234567890",
  "LastUpdated" : "2022-03-28T02:50:26Z",
  "Code" : "Success"
}

在实际使用用,发现在ECS里请求上述地址会出现超时问题。。。所以建议实际使用中,本地缓存临时授权并判断授权过期时间。

kubernetes中配置EcsRamRole

      annotations:
        k8s.aliyun.com/eci-ram-role-name: role_name

alpine Docker中调用aliyun命令

apk add --no-cache libc6-compat musl

基本使用

以 oss 为例:

# 导入角色
source /etc/profile.d/ecs_role.sh

## 设定 oss 的 endpoint 地址
EndpointLan="http://oss-${Region}-internal.aliyuncs.com"
EndpointWan="http://oss-${Region}.aliyuncs.com"

##查询
## 默认查询是递归查询,-d 只查询一层
aliyun oss ls oss://test/ -d -e ${EndpointLan}

##基本的上传或下载
##上传文件 a.file 到 oss://test/ 
aliyun oss cp a.file oss://test/ -e ${EndpointLan}

##基本的递归上传
##上传目录 abc 下的文件到 oss://test/ 下,如果有重复内容,则需要加入 --force
aliyun oss cp abc oss://test/ --recursive -e ${EndpointLan}

##复杂的递归上传
##上传目录 abc 下的 .lzo 结尾的文件到 oss://test/ 下.
##严禁在源目录里执行 --recursive 参数.
##即禁止执行 aliyun oss cp . oss://test/ --recursive 
aliyun oss cp abc/ oss://test/ --include='*.lzo' --update --recursive -e ${EndpointLan} --checkpoint-dir=/tmp/ossutil_checkpoint --output-dir=/tmp/ossutil_output

##同步目录 sync 指令变更
##同步目录 abc 下的文件到 oss://test/ 下,如有重复,则忽略;同时删除目标目录下本地没有的文件
aliyun oss sync abc/ oss://test/ --update --delete --force -e ${EndpointLan} --checkpoint-dir=/tmp/ossutil_checkpoint --output-dir=/tmp/ossutil_output