서비스별 엔드포인트
참고
설정 페이지의 레이아웃을 이해하거나, 이어지는 AWS SDK 및 도구 지원 표를 해석하는 데 도움이 되는 정보는 이 안내서의 설정 페이지의 이해에서 확인하세요.
서비스별 엔드포인트 구성은 API 요청에 대해 사용자가 선택한 엔드포인트를 사용하고 선택을 유지할 수 있는 옵션을 제공합니다. 이러한 설정은 로컬 엔드포인트, VPC 엔드포인트 및 타사 로컬 AWS 개발 환경을 지원할 수 있는 유연성을 제공합니다. 테스트 환경과 프로덕션 환경에 서로 다른 엔드포인트를 사용할 수 있습니다. 개별 AWS 서비스 서비스에 대한 엔드포인트 URL을 지정할 수 있습니다.
다음을 사용하여 이 기능을 구성하십시오.
endpoint_url- 공유 AWSconfig파일 설정AWS_ENDPOINT_URL- 환경 변수aws.endpointUrl- JVM 시스템 속성: Java/Kotlin만 해당-
프로파일 내에서 직접 지정하거나 환경 변수로 지정하는 경우 이 설정은 모든 서비스 요청에 사용되는 엔드포인트를 지정합니다. 이 엔드포인트는 구성된 모든 서비스별 엔드포인트에 의해 재정의됩니다.
공유 AWS
config파일의services섹션 내에서 이 설정을 사용하여 특정 서비스에 대한 사용자 지정 엔드포인트를 설정할 수도 있습니다.services섹션에서 사용할 모든 서비스 식별자 키 목록은 서비스별 엔드포인트 식별자 섹션을 참조하십시오.기본 값:
none유효한 값: 엔드포인트의 스키마와 호스트가 포함된 URL. URL에는 하나 이상의 경로 세그먼트가 포함된 경로 구성 요소가 선택적으로 포함될 수 있습니다.
AWS_ENDPOINT_URL_<SERVICE>- 환경 변수aws.endpointUrl<ServiceName>- JVM 시스템 속성: Java/Kotlin만 해당-
AWS_ENDPOINT_URL_<SERVICE>, 여기서<SERVICE>는 AWS 서비스 식별자로, 특정 서비스에 대한 사용자 지정 엔드포인트를 설정합니다. 모든 서비스별 환경 변수 목록은 서비스별 엔드포인트 식별자을 참조하십시오.이 서비스별 엔드포인트는
AWS_ENDPOINT_URL에 설정된 모든 글로벌 엔드포인트보다 우선합니다.기본 값:
none유효한 값: 엔드포인트의 스키마와 호스트가 포함된 URL. URL에는 하나 이상의 경로 세그먼트가 포함된 경로 구성 요소가 선택적으로 포함될 수 있습니다.
ignore_configured_endpoint_urls- 공유 AWSconfig파일 설정AWS_IGNORE_CONFIGURED_ENDPOINT_URLS- 환경 변수aws.ignoreConfiguredEndpointUrls- JVM 시스템 속성: Java/Kotlin만 해당-
이 설정은 모든 사용자 지정 엔드포인트 구성을 무시하는 데 사용됩니다.
코드에 설정되거나 서비스 클라이언트 자체에 설정된 명시적 엔드포인트는 이 설정과 상관없이 사용된다는 점에 유의하십시오. 예를 들어 AWS CLI 명령과 함께
--endpoint-url명령줄 파라미터를 포함하거나 클라이언트 생성자에 엔드포인트 URL을 전달하면 항상 적용됩니다.기본값:
false유효값:
-
true— SDK 또는 도구는 공유config파일 또는 환경 변수에서 엔드포인트 URL 설정을 위한 사용자 지정 구성 옵션을 읽지 않습니다. -
false— SDK 또는 도구는 공유config파일 또는 환경 변수에서 사용 가능한 사용자 제공 엔드포인트를 사용합니다.
-
환경 변수를 사용한 엔드포인트 구성
모든 서비스에 대한 요청을 사용자 지정 엔드포인트 URL로 라우팅하려면 AWS_ENDPOINT_URL 글로벌 환경 변수를 설정하십시오.
export AWS_ENDPOINT_URL=http://localhost:4567
특정 AWS 서비스 서비스에 대한 요청을 사용자 지정 엔드포인트 URL로 라우팅하려면 AWS_ENDPOINT_URL_<SERVICE> 환경 변수를 사용합니다. Amazon DynamoDB는 DynamoDBserviceId가 있습니다. 이 서비스의 경우 엔드포인트 URL 환경 변수는 AWS_ENDPOINT_URL_DYNAMODB입니다. 이 엔드포인트는 이서비스에 대해 AWS_ENDPOINT_URL에 설정된 글로벌 엔드포인트보다 우선합니다.
export AWS_ENDPOINT_URL_DYNAMODB=http://localhost:5678
또 다른 예로, AWS Elastic Beanstalk는 Elastic BeanstalkserviceId가 있습니다. AWS 서비스 식별자는 모든 공백을 밑줄로 바꾸고 모든 문자를 대문자로 바꾸는 방식으로 API 모델의 serviceId를 기반으로 합니다. 이 서비스에 대한 엔드포인트를 설정하려면 해당 환경 변수는 AWS_ENDPOINT_URL_ELASTIC_BEANSTALK입니다. 모든 서비스별 환경 변수 목록은 서비스별 엔드포인트 식별자을 참조하십시오.
export AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=http://localhost:5567
공유 config 파일을 사용하여 엔드포인트를 구성합니다.
공유 config 파일에서는 다양한 기능을 위해 여러 위치에서 endpoint_url이 사용됩니다.
-
profile내에서 직접 지정된endpoint_url은 해당 엔드포인트를 글로벌 엔드포인트로 만듭니다. -
services섹션 내의 서비스 식별자 키 아래에 중첩된endpoint_url은 해당 엔드포인트가 해당 서비스에 대한 요청에만 적용되로고 만듭니다. 공유config파일에서services섹션을 정의하는 방법에 대한 자세한 내용은 구성 파일 형식를 참조하십시오.
다음 예제에서는 services 정의를 사용하여 Amazon S3에 대한 서비스별 엔드포인트 URL과 다른 모든 서비스에 사용되는 사용자 지정 글로벌 엔드포인트를 구성합니다.
[profiledev-s3-specific-and-global] endpoint_url =http://localhost:1234services =s3-specific[servicess3-specific] s3 = endpoint_url =https://play.min.io:9000
단일 프로파일로 여러 서비스에 대한 엔드포인트를 구성할 수 있습니다. 이 예제에서는 동일한 프로파일에서 Amazon S3와 AWS Elastic Beanstalk에 대한 서비스별 엔드포인트 URL을 설정하는 방법을 보여줍니다. AWS Elastic Beanstalk에는 Elastic BeanstalkserviceId가 있습니다. AWS 서비스 서비스 식별자는 모든 공백을 밑줄로 바꾸고 모든 문자를 소문자로 바꾸는 방식으로 API 모델의 serviceId를 기반으로 합니다. 따라서 서비스 식별자 키가 elastic_beanstalk가 되고 이 서비스에 대한 설정이 elastic_beanstalk = 줄에서 시작됩니다. services 섹션에서 사용할 모든 서비스 식별자 키 목록은 서비스별 엔드포인트 식별자을 참조하십시오.
[servicestesting-s3-and-eb] s3 = endpoint_url =http://localhost:4567elastic_beanstalk = endpoint_url =http://localhost:8000[profiledev] services =testing-s3-and-eb
서비스 구성 섹션은 여러 프로파일에서 사용할 수 있습니다. 예를 들어 두 프로파일이 동일한 services 정의를 사용하면서 다른 프로파일 속성을 변경할 수 있습니다.
[servicestesting-s3] s3 = endpoint_url =https://localhost:4567[profiletesting-json] output = json services =testing-s3[profiletesting-text] output = text services =testing-s3
역할 기반 보안 인증을 사용하여 프로파일의 엔드포인트 구성
프로파일에 역할 기반 보안 인증 정보가 IAM 가정 역할 기능에 대한 source_profile 파라미터를 통해 구성된 경우 SDK는 지정된 프로파일에 대한 서비스 구성만 사용합니다. 역할이 연결된 프로파일은 사용하지 않습니다. 예를 들어 다음과 같은 공유 config 파일을 사용합니다.
[profileA] credential_source =Ec2InstanceMetadataendpoint_url =https://profile-a-endpoint.aws/[profileB] source_profile =Arole_arn =arn:aws:iam::123456789012:role/roleBservices =profileB[servicesprofileB] ec2 = endpoint_url =https://profile-b-ec2-endpoint.aws
프로파일 B를 사용하고 코드에서 Amazon EC2로 호출하는 경우 엔드포인트는 https://profile-b-ec2-endpoint.aws로 확인됩니다. 코드에서 다른 서비스에 요청을 하는 경우 엔드포인트 확인은 사용자 지정 로직을 따르지 않습니다. 엔드포인트는 프로파일 A에 정의된 글로벌 엔드포인트로 확인되지 않습니다. 글로벌 엔드포인트가 프로파일 B에 적용되려면 프로파일 B 내에서 직접 endpoint_url을 설정해야 합니다. source_profile 설정에 대한 자세한 내용은 역할 보안 인증 제공자 수임 단원을 참조하십시오.
설정의 우선 순위
이 기능의 설정은 동시에 사용할 수 있지만 서비스당 하나의 값만 우선합니다. 주어진 AWS 서비스에 대한 API 직접 호출의 경우 다음 순서에 따라 값을 선택합니다.
-
코드나 서비스 클라이언트 자체에 설정된 모든 명시적 설정은 다른 모든 설정보다 우선합니다.
-
AWS CLI의 경우 이 값은
--endpoint-url명령줄 파라미터에서 제공하는 값입니다. SDK의 경우 명시적 할당은 AWS 서비스 클라이언트 또는 구성 객체를 인스턴스화할 때 설정하는 파라미터의 형태를 취할 수 있습니다.
-
-
서비스별 환경 변수에서 제공하는 값(예:
AWS_ENDPOINT_URL_DYNAMODB). -
AWS_ENDPOINT_URL글로벌 엔드포인트 환경 변수에 의해 제공되는 값입니다. -
공유
config파일의services섹션 내에 서비스 식별자 키 아래 중첩된endpoint_url설정에서 제공하는 값. -
공유
config파일의profile내에서 직접 지정된endpoint_url설정에 의해 제공되는 값. -
각 AWS 서비스에 대한 기본 엔드포인트 URL이 마지막에 사용됩니다.
AWS SDK 및 도구 지원
다음 SDK는 이 주제에서 설명하는 기능 및 설정을 지원합니다. 모든 일부 예외가 기록됩니다. 모든 JVM 시스템 속성 설정은 AWS SDK for Java 및 AWS SDK for Kotlin에서만 지원됩니다.
| SDK | 지원 | 참고 또는 추가 정보 |
|---|---|---|
| AWS CLI v2 | 예 | |
| SDK for C++ | 아니요 | |
| SDK for Go V2 (1.x) |
예 | |
| SDK for Go 1.x (V1) | 아니요 | |
| SDK for Java 2.x | 예 | |
| SDK for Java 1.x | 아니요 | |
| SDK for JavaScript 3.x | 예 | |
| SDK for JavaScript 2.x | 아니요 | |
| SDK for Kotlin | 예 | |
| SDK for .NET 4.x | 예 | |
| SDK for .NET 3.x | 예 | |
| SDK for PHP 3.x | 예 | |
| SDK for Python (Boto3) |
예 | |
| SDK for Ruby 3.x | 예 | |
| SDK for Rust | 예 | |
| SDK for Swift | 예 | |
| Tools for PowerShell V5 | 예 | |
| Tools for PowerShell V4 | 예 |