botocore 및 pythhon에서 클라우드 API 사용
10227 단어 NiftyCloudPython
어제@alice02씨의 보도입니다.
나는 내 이름도 조금 생겨서 매우 기쁘다.
저는 새로 졸업한 1년 견습 엔지니어신입사원들끼리 루비 스터디 하는 이야기.입니다.
최근에 부서에 배치되어 허무맹랑한 API를 두드릴 기회가 생겨서 ptyhon으로 기본적인 허무맹랑한 API를 간단하게 말씀드리고 싶습니다.
가상 클라우드 API
클라우드 컴퓨팅은 API로서 다양한 기능을 제공합니다.
요청을 보내는 데 필요한 서명 버전은 1~4개이며, 서비스에 따라 사용할 수 있는 서명도 다르다.
이번에는 nifty 클라우드 스크립트의 API와 서명 버전 4를 예로 들었다.
이른바 botocore
AWS용 저수준 인터페이스에서는 현재 AWS CLI 및 boto3에서 사용됩니다.
허운 API의 서명은 AWS와 같은 방식으로 생성되기 때문에 botocore를 사용할 수 있습니다.
궁금하신 분들은 @umiiiiins 창고에서 원본 코드를 확인하세요.
차리다
파이썬 설치(이번에는 3.5.2 사용)
클라우드 스크립트botocore를 실행합니다.
그림의 빨간 상자 부분에서 얻은 접근 키와 비밀 키를 환경 변수로 합니다KEY_ID 및 SECRETACCESS_KEY로 등록
[컴파일] 빠른 시작
그럼 스크립트를 실행하고 싶습니다.
실제로 해 보다
우선, 참조는 필요한 요청 URL과 헤더, 파라미터를 설정합니다.
script_api.py
url = "https://script.api.cloud.nifty.com/2015-09-01"
headers = {
'X-Amz-Target': '2015-09-01.ExecuteScript',
}
params = {
'ScriptIdentifier': 'test.js',
'Method': 'GET',
'Header': '{}',
'Body': '{}',
'Query': '{"name":"Umino"}',
}
이어서 botocore를 사용하여 서명과 요청을 생성합니다.AWSRequest 매개 변수의 method 오류가 있는지 확인하십시오.
script_api.py
credentials = Credentials(os.environ["ACCESS_KEY_ID"],os.environ["SECRET_ACCESS_KEY"])
request = AWSRequest(method="POST",url=url,data=params,headers=headers)
SigV4Auth(credentials, "ExecuteScript",'east-1').add_auth(request)
response = BotocoreHTTPSession().send(request.prepare())
필요한 것 import을 위의 프로그램을 두드려 보면<?xml version='1.0' encoding='utf-8'?>
<executescriptresponse>
<requestid>
9b195209-c025-4522-8e6a-9840324f3fb6
</requestid>
<executescriptresult>
<result>
<responsestatus>
200
</responsestatus>
<scriptidentifier>
test.js
</scriptidentifier>
<requestquery>
<![CDATA[{"name":"Umino"}]]>
</requestquery>
<requestbody>
<![CDATA[{}]]>
</requestbody>
<responseheader>
<![CDATA[{"Content-Type":"text/plain"}]]>
</responseheader>
<requestheader>
<![CDATA[{}]]>
</requestheader>
<responsedata>
<![CDATA[Umino]]>
</responsedata>
<status>
200
</status>
</result>
</executescriptresult>
</executescriptresponse>
성공했어, 결국 돌아왔어.스크립트는 스크립트 API 참조에 있습니다.
잠깐 설명 좀 해주세요.
이번에 Signature를 생성한 것은SigV4Auth반의addauth에서 불리는 다양한 방법이다.SigV4Auth 외에도 서명 버전 2를 생성하는 AigV2Auth 등이 있는데, 이를 활용해 니퓨티 클라우드 API에서 사용 서명을 간단하게 생성할 수 있다.
SigV4 Auth의 실행 전과 후 헤더를 비교해 보면 실행 후 Authorization이 추가된 것을 알 수 있다.
서명 생성 전
{
'X-Amz-Target': '2015-09-01.ExecuteScript',
}
서명 생성 후{
'X-Amz-Target': '2015-09-01.ExecuteScript',
'X-Amz-Date': '20161211T090451Z',
'Authorization': 'AWS4-HMAC-SHA256
Credential=OOICPHKDBZZE9ZNGEBV7/20161211/east-1/ExecuteScript/aws4_request,
SignedHeaders=content-type;host;x-amz-date;x-amz-target,
Signature=ffddxxxxxxxxxxxxxxxxxxxxxxxxxxxxd4',
}
또한, SigV2Auth를 사용하여 서버의DescribeInstances를 실행해 보았는데, 실행 후 매개 변수에 생성된 서명이 추가되었다.서명 생성 전
{'AccessKeyId': 'OOICPHKDBZZE9ZNGEBV7',
'Action': 'DescribeInstances', 'SignatureVersion': '2',
'Timestamp': '2016-12-11T18:28:03Z', 'SignatureMethod': 'HmacSHA256'
}
서명 생성 후{'AccessKeyId': 'OOICPHKDBZZE9ZNGEBV7',
'Action': 'DescribeInstances', 'SignatureVersion': '2',
'Timestamp': '2016-12-11T09:28:03Z', 'SignatureMethod': 'HmacSHA256',
'Signature': 'FydxxxxxxxxxxxxxxxxxxxxxxxxxxxxxqRc='
}
총결산
이번에botocore를 예로 들면pytohon에서 아주 적은 스크립트를 쳤을 수도 있고 스크립트 이외의 서비스에서도 사용할 수 있다.
서명 버전 4가 되면 직접 설치하기가 번거롭기 때문에python에서부터 nifty 클라우드 API를 사용할 때 어려움이 있으면 참고하세요.
내일은 여기.씨의'도표 DB로 Ansible의 구성 정보를 관리합니다'에 따라!
Reference
이 문제에 관하여(botocore 및 pythhon에서 클라우드 API 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/umiiiiins/items/071d6f093a4133324c02텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)