IBM云对象存储授权密钥curl请求

vptzau2j  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(128)

我试图使用下面的curl命令从IBMCloudObject存储中下载一个文件,

curl "https://(endpoint)/(bucket-name)/(object-key)"-H "Authorization: bearer (token)"

我从我的IBM对象存储 Jmeter 板中得到了一个端点,这里的对象密钥和令牌是什么意思?我能够为这个特定的服务得到4个令牌。
先谢谢你。

7d7tgy0s

7d7tgy0s1#

经过探索,我发现以下细节...
对象关键字:对象名称不记名令牌:IAM标记

iqxoj9l9

iqxoj9l92#

在这个主题上搜寻有用的信息是很困难的。所以让我在这里放一些:

通用API文档:https://cloud.ibm.com/docs/cloud-object-storage/api-reference?topic=cloud-object-storage-compatibility-api
正在检索和存储对象:https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-object-operations
教育课程:https://blog.speduconsulting.co.uk/2021/07/12/getting-started-with-ibm-cloud-object-storage/

正在检索令牌

使用一些bash、curl和jq,我们可以创建一个令牌检索函数:

function getToken {
    local authenticationUrl=$1
    local apiKey=$2

    curl -X "POST" "${authenticationUrl}" \
         -H 'Accept: application/json' \
         -H 'Content-Type: application/x-www-form-urlencoded' \
         --data-urlencode "apikey=${apiKey}" \
         --data-urlencode "response_type=cloud_iam" \
         --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
         --silent | jq .access_token -r
}

若要使用函数,请执行类似下列的程式:

authenticationUrl="https://iam.cloud.ibm.com/identity/token"
apiKey="my-cos-api-key"

token=$(getToken ${authenticationUrl} ${apiKey})

这将输出一个可以在后面的函数中使用的标记。

bash函数使用curl将文件放入COS:

function putFileInCOS {
    local token=$1
    local bucketUrl=$2
    local bucketName=$3
    local filePath=$4
    local fileName=$5
  
    echo "Uploading file: ${fileName}"
  
    curl -X "PUT" "${bucketUrl}/${bucketName}/${fileName}" \
         -H "Authorization: bearer ${token}" \
         --data-binary "@${filePath}"
}

用法:

bucketUrl="https://s3.eu-de.cloud-object-storage.appdomain.cloud"
bucketName="bucket-name"
filePath="./my-file-path.csv"
fileName="file-name-in-cos"

putFileInCOS ${token} ${bucketUrl} ${bucketName} ${filePath} ${fileName}

bash函数使用curl从COS检索文件

function getFileFromCOS {
    local token=$1
    local bucketUrl=$2
    local bucketName=$3
    local fileName=$4
  
    echo "Retrieving file: ${fileName}"
  
    curl -X "GET" "${bucketUrl}/${bucketName}/${fileName}" \
         -H "Authorization: bearer ${token}"
}

用法:

bucketUrl="https://s3.eu-de.cloud-object-storage.appdomain.cloud"
bucketName="bucket-name"
fileName="file-name-in-cos"

getFileFromCOS ${token} ${bucketUrl} ${bucketName} ${fileName}

相关问题