HCP API 개요
HCP API 개요 (HCP API Overview)
이 주제는 플랫폼 리소스를 관리하기 위한 RESTful API인 HCP API 사용에 대한 개요를 제공해요.
출처: 문서
본문
개요 (Overview)
다음 단계는 HCP API와 상호작용하는 절차를 설명해요.
- HCP에 인증해 액세스 토큰을 생성해요.
- 액세스 토큰을 사용해 원하는 엔드포인트와 상호작용해요.
HCP API는 다음 URL을 사용해요.
| 속성(Attribute) | 설명(Description) | 값(Value) |
|---|---|---|
| API base URL | HCP API 서비스의 기본 엔드포인트 URL | https://api.cloud.hashicorp.com |
| HCP Authentication URL | 서비스 주체 클라이언트 ID와 시크릿으로 HCP에 인증하는 URL | https://auth.idp.hashicorp.com |
사전 요구 사항 (Prerequisites)
인증하고 API와 상호작용하려면 다음 정보가 있어야 해요.
- Client ID: HCP에 인증하는 데 사용하는 서비스 주체 클라이언트 ID. ID를 얻는 방법은 Create a service principal 문서를 참고하세요.
- Client secret: HCP에 인증하는 데 사용하는 서비스 주체 클라이언트 시크릿. ID를 얻는 방법은 Create a service principal 문서를 참고하세요.
- Organization ID: 조회하려는 리소스의 프로젝트를 포함하는 HCP 조직. 조직 생성·관리 정보는 HCP Organizations 문서를 참고하세요. Organization settings 페이지에서 조직 ID를 가져올 수 있어요.
- Project ID: 조회하려는 리소스를 포함하는 HCP 프로젝트. 프로젝트 생성·관리 정보는 HCP Projects 문서를 참고하세요. Project settings 페이지에서 프로젝트 ID를 가져올 수 있어요.
ID를 다음 변수에 할당해요.
HCP_CLIENT_ID와HCP_CLIENT_SECRET환경 변수를 서비스 주체 키로 설정해요. Packer는 이 값들을 사용해 HCP에 인증하고 액세스 키를 생성해요.ORGANIZATION_ID환경 변수를 HCP 조직 ID로 설정해요.PROJECT_ID환경 변수를 HCP 프로젝트 ID로 설정해요.
HCP에 인증하기 (Authenticate to HCP)
HCP API는 요청을 승인하기 위해 액세스 토큰이 필요해요.
- HCP 클라이언트 ID와 시크릿으로 액세스 키를 생성해요.
$ curl --location "https://auth.idp.hashicorp.com/oauth2/token" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "client_id=$HCP_CLIENT_ID" \
--data-urlencode "client_secret=$HCP_CLIENT_SECRET" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "audience=https://api.hashicorp.cloud"
다음 예시 응답에서 bearer 액세스 토큰은 1시간 동안 유효해요.
{
"access_token": "eyJhbG...sInR...",
"expires_in": 3600,
"token_type": "Bearer"
}
HCP_ACCESS_TOKEN환경 변수를 액세스 토큰으로 설정해요. 이렇게 하면 API와 상호작용할 때 토큰을 참조하기 쉬워요.
$ export HCP_ACCESS_TOKEN=<access-token>
API와 상호작용하기 (Interact with API)
액세스 토큰을 검색한 후에는 HCP API를 사용할 준비가 됐어요. 각 요청의 Authorization 헤더에 액세스 토큰을 bearer 토큰으로 제공해야 합니다.
다음 예시는 HCP 프로젝트에서 HCP Packer 버킷을 검색하는 방법을 보여줘요. 워크플로우와 인증 과정은 다른 HCP 작업에서도 비슷합니다.
$ curl --location "https://api.cloud.hashicorp.com/packer/2021-04-30/organizations/$ORGANIZATION_ID/projects/$PROJECT_ID/images?pagination.page_size=10" \
--header "authorization: Bearer ***"
자세한 내용은 리소스를 소유하는 특정 서비스의 API 문서를 참고하세요.
버전 관리 (Versioning)
더 알아보기 (Learn more)
- HCP란 무엇인가요? — HCP 플랫폼 전반을 이해해 보세요.
- 조직 (Organizations) — 조직 ID를 확인하는 방법을 살펴보세요.
- 프로젝트 (Projects) — 프로젝트 ID를 확인하는 방법을 알아보세요.