尝试 运行 在 IBM Cloud Functions 中编码
Trying to run code in IBM Cloud Functions
我有以下代码,我正在尝试 运行 在 IBM 函数中获取计费数据:
iam_token = 'Bearer eyJraWQiOiIyMDE3MTAzMC0wM****'
def processResourceInstanceUsage(account_id, billMonth):
METERING_HOST = "https://metering-reporting.ng.bluemix.net"
USAGE_URL = "/v4/accounts/"+account_id + \
"/resource_instances/usage/"+billMonth+"?_limit=100&_names=true"
url = METERING_HOST+USAGE_URL
headers = {
"Authorization": "{}".format(iam_token),
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print("\n\nResource instance usage for first 100 items")
return response.json()
processResourceInstanceUsage('*****', '11')
出于某种原因,我一直收到 201 未经授权的错误。我多次尝试创建 iam_token。它仍然给出相同的错误。
您提供的代码中有几处需要注意。
你输入的月份不对。它应该是 YYYY-MM 格式。
当您 运行 ibmcloud target
对于 IAM 令牌,运行 此命令 ibmcloud iam oauth_tokens
。如果您想使用平台 API 密钥生成 访问令牌 ,请参阅此 link。 Bearer 一词不是必需的,因为这不是授权令牌。
完成所有这些后,创建一个 IBM Cloud 函数 (Python 3),添加以下代码,传递 account_id 和令牌并调用操作以查看结果。 IBM Cloud 函数需要字典作为 input/parameter 和 JSON 作为响应
import sys
import requests
def main(dict):
METERING_HOST="https://metering-reporting.ng.bluemix.net"
account_id="3d40d89730XXXXXXX"
billMonth="2018-10"
iam_token="<IAM_TOKEN> or <ACCESS_TOKEN>"
USAGE_URL="/v4/accounts/"+account_id+"/resource_instances/usage/"+billMonth+"?_limit=100&_names=true"
url=METERING_HOST+USAGE_URL
headers = {
"Authorization": "{}".format(iam_token),
"Accept": "application/json",
"Content-Type": "application/json"
}
response=requests.get(url, headers=headers)
print ("\n\nResource instance usage for first 100 items")
return { 'message': response.json() }
这对我有用,并返回了 JSON 和区域计费数据。
参考:
我有以下代码,我正在尝试 运行 在 IBM 函数中获取计费数据:
iam_token = 'Bearer eyJraWQiOiIyMDE3MTAzMC0wM****'
def processResourceInstanceUsage(account_id, billMonth):
METERING_HOST = "https://metering-reporting.ng.bluemix.net"
USAGE_URL = "/v4/accounts/"+account_id + \
"/resource_instances/usage/"+billMonth+"?_limit=100&_names=true"
url = METERING_HOST+USAGE_URL
headers = {
"Authorization": "{}".format(iam_token),
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print("\n\nResource instance usage for first 100 items")
return response.json()
processResourceInstanceUsage('*****', '11')
出于某种原因,我一直收到 201 未经授权的错误。我多次尝试创建 iam_token。它仍然给出相同的错误。
您提供的代码中有几处需要注意。
你输入的月份不对。它应该是 YYYY-MM 格式。
当您 运行 对于 IAM 令牌,运行 此命令
ibmcloud iam oauth_tokens
。如果您想使用平台 API 密钥生成 访问令牌 ,请参阅此 link。 Bearer 一词不是必需的,因为这不是授权令牌。
ibmcloud target
完成所有这些后,创建一个 IBM Cloud 函数 (Python 3),添加以下代码,传递 account_id 和令牌并调用操作以查看结果。 IBM Cloud 函数需要字典作为 input/parameter 和 JSON 作为响应
import sys
import requests
def main(dict):
METERING_HOST="https://metering-reporting.ng.bluemix.net"
account_id="3d40d89730XXXXXXX"
billMonth="2018-10"
iam_token="<IAM_TOKEN> or <ACCESS_TOKEN>"
USAGE_URL="/v4/accounts/"+account_id+"/resource_instances/usage/"+billMonth+"?_limit=100&_names=true"
url=METERING_HOST+USAGE_URL
headers = {
"Authorization": "{}".format(iam_token),
"Accept": "application/json",
"Content-Type": "application/json"
}
response=requests.get(url, headers=headers)
print ("\n\nResource instance usage for first 100 items")
return { 'message': response.json() }
这对我有用,并返回了 JSON 和区域计费数据。
参考: