

버전 5(V5) AWS Tools for PowerShell 가 릴리스되었습니다.

변경 사항 해제 및 애플리케이션 마이그레이션에 대한 자세한 내용은 [마이그레이션 주제를](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html) 참조하세요.

 [https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 구성 및 사용 AWS Tools for PowerShell
<a name="pstools-getting-started"></a>

이 섹션의 일부 주제에서는 도구를 [설치하고 인증을 설정한](pstools-getting-set-up.md) 후 Tools for Windows PowerShell을 사용하는 기본 사항에 대해 설명합니다. 예를 들어, Tools for PowerShell이 상호 작용할 때 사용해야 하는 [AWS 리전](pstools-installing-specifying-region.md)을 지정하는 방법을 설명합니다 AWS.

이 섹션의 다른 주제에서는 도구, 환경 및 프로젝트를 구성할 수 있는 고급 방법에 대한 정보를 제공합니다.

**Topics**
+ [AWS 리전](pstools-installing-specifying-region.md)
+ [보안 인증 정보 및 프로파일 확인](creds-assign.md)
+ [연동 자격 증명 구성](saml-pst.md)
+ [관찰성](observability.md)
+ [Cmdlet 검색 및 별칭](pstools-discovery-aliases.md)
+ [파이프라인, 출력 및 반복](pstools-pipelines.md)
+ [사용자 및 역할](pstools-users-roles.md)
+ [레거시 보안 인증 사용](pstools-cred-legacy.md)

# 의 AWS 리전 지정 AWS Tools for PowerShell
<a name="pstools-installing-specifying-region"></a>

 AWS Tools for PowerShell 명령을 실행할 때 사용할 AWS 리전을 지정하는 방법에는 두 가지가 있습니다.
+ 개별 명령에서 `-Region` 공통 매개 변수를 사용합니다.
+ `Set-DefaultAWSRegion` 명령을 사용하여 모든 명령에 대한 기본 리전을 설정합니다.

Tools for Windows PowerShell에서 사용할 리전을 확인할 수 없는 경우 많은 AWS cmdlet이 실패합니다. 예외에는 Amazon [Amazon S3](pstools-s3.md) Amazon SES 및에 대한 cmdlet이 포함되며 AWS Identity and Access Management, 이는 자동으로 글로벌 엔드포인트로 기본 설정됩니다.

 **단일 AWS 명령에 대한 리전을 지정하려면** 

다음과 같이 `-Region` 매개 변수를 명령에 추가합니다.

```
PS > Get-EC2Image -Region us-west-2
```

 **현재 세션의 모든 AWS CLI 명령에 대해 기본 리전을 설정하려면** 

PowerShell 명령 프롬프트에서 다음 명령을 입력합니다.

```
PS > Set-DefaultAWSRegion -Region us-west-2
```

**참고**  
이 설정은 현재 세션 동안만 지속됩니다. 이 설정을 모든 PowerShell 세션에 적용하려면 `Import-Module` 명령에 추가할 때처럼 PowerShell 프로파일에 이 명령을 추가합니다.

 **모든 AWS CLI 명령에 대한 현재 기본 리전을 보려면** 

PowerShell 명령 프롬프트에서 다음 명령을 입력합니다.

```
PS > Get-DefaultAWSRegion

Region    Name             IsShellDefault
------    ----             --------------
us-west-2 US West (Oregon) True
```

 **모든 AWS CLI 명령에 대해 현재 기본 리전을 지우려면** 

PowerShell 명령 프롬프트에서 다음 명령을 입력합니다.

```
PS > Clear-DefaultAWSRegion
```

 **사용 가능한 모든 AWS 리전 목록을 보려면** 

PowerShell 명령 프롬프트에서 다음 명령을 입력합니다. 샘플 출력의 세 번째 열은 현재 세션의 기본 값인 리전을 나타냅니다.

```
PS > Get-AWSRegion

Region         Name                      IsShellDefault
------         ----                      --------------
ap-east-1      Asia Pacific (Hong Kong)  False
ap-northeast-1 Asia Pacific (Tokyo)      False
...
us-east-2      US East (Ohio)            False
us-west-1      US West (N. California)   False
us-west-2      US West (Oregon)          True
...
```

**참고**  
일부 리전은 지원되지만 `Get-AWSRegion` cmdlet의 출력에 포함되지 않을 수 있습니다. 예를 들어, 아직 글로벌 지역이 아닌 리전에서 이러한 문제가 발생할 수 있습니다. `-Region` 파라미터를 추가하여 리전을 지정할 수 없는 경우, 대신에 다음 단원에서와 같이 사용자 지정 엔드포인트에서 리전을 지정해 보세요.

## 사용자 지정 또는 비표준 엔드포인트 지정
<a name="specifying-a-custom-or-nonstandard-endpoint"></a>

다음과 같은 샘플 형식으로 `-EndpointUrl` 일반 파라미터를 Tools for Windows PowerShell 명령에 추가하여 사용자 지정 엔드포인트를 URL로 지정합니다.

```
PS > Some-AWS-PowerShellCmdlet -EndpointUrl "custom endpoint URL" -Other -Parameters
```

다음은 `Get-EC2Instance` cmdlet 사용을 보여주는 예입니다. 이 예에서는 사용자 지정 엔드포인트가 `us-west-2` 또는 미국 서부(오레곤)에 있지만, `Get-AWSRegion`을 통해 열거되지 않는 리전을 포함하여 지원되는 다른 AWS 리전을 모두 사용할 수 있습니다.

```
PS > Get-EC2Instance -EndpointUrl "https://service-custom-url.us-west-2.amazonaws.com" -InstanceID "i-0555a30a2000000e1"
```

## 추가 정보
<a name="region-additional-info"></a>

 AWS 리전에 대한 자세한 내용은 SDK 및 도구 참조 안내서의 [AWS 리전](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html)을 참조하세요. *AWS SDKs *

# 보안 인증 정보 및 프로파일 확인
<a name="creds-assign"></a>

## 자격 증명 검색 순서
<a name="cred-provider-chain-main"></a>

명령을 실행하면가 다음 순서로 자격 증명을 AWS Tools for PowerShell 검색합니다. 사용 가능한 자격 증명을 찾으면 중지됩니다.

1. 명령줄에 파라미터로 내장된 리터럴 자격 증명입니다.

   가급적이면 명령줄에 리터럴 자격 증명을 추가하기 보다는 프로파일을 사용하는 것이 좋습니다.

1. `-Credential` 파라미터에서 지정된 자격 증명.

1. [Set-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Set-AWSCredential.html) cmdlet을 사용하여 지정한 프로필 이름 또는 프로필 위치입니다.
   + 프로필 이름만 지정하는 경우 명령은 SDK 스토어에서 AWS 지정된 프로필을 찾고, 없는 경우 기본 위치의 AWS 공유 자격 증명 파일에서 지정된 프로필을 찾습니다.
   + 프로파일 위치만 지정하는 경우, 이 명령은 해당 자격 증명 파일에서 `default` 프로파일을 찾습니다.
   + 이름과 위치를 모두 지정하는 경우, 이 명령은 해당 자격 증명 파일에서 지정된 프로파일을 찾습니다.

   지정된 프로파일이나 위치가 없으면 명령에서 예외가 발생합니다. 프로파일이나 위치를 지정하지 않은 경우에만 검색이 다음 단계로 이동합니다.

1. 세 변수 모두에 값이 있는 경우 `AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY`, 및 `AWS_SESSION_TOKEN` 환경 변수에서 생성된 자격 증명입니다.

1. `AWS_PROFILE` 환경 변수에 지정된 이름을 가진 자격 증명 프로파일입니다.

1. 기본 프로파일(다음 순서대로).

   1.  AWS SDK 스토어의 `default` 프로필입니다.

   1. 공유 AWS `credentials` 파일의 `default` 프로필입니다.

   1.  AWS SDK 스토어의 `AWS PS Default` 프로필입니다.

1. IAM 역할을 사용하도록 구성된 Amazon EC2 인스턴스에서 명령이 실행 중인 경우, 인스턴스 프로파일로부터 액세스한 EC2 인스턴스의 임시 자격 증명입니다.

   Amazon EC2 인스턴스에 대한 IAM 역할 사용에 대한 자세한 내용은 [AWS SDK for .NET 개발자 안내서](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/)의 [역할로 액세스 권한 부여](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html)를 참조하세요.

이 검색을 통해 지정된 자격 증명을 찾지 못한 경우 명령에서 예외가 발생합니다.

환경 변수 및 자격 증명 프로파일에 대한 자세한 내용은 [AWS SDKs 및 도구 참조 가이드](https://docs.aws.amazon.com/sdkref/latest/guide/)의 [환경 변수](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html), [환경 변수 목록](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#EVarSettings), [공유 구성 및 자격 증명 파일](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) 주제를 참조하세요.

# 를 사용하여 페더레이션 ID 구성 AWS Tools for PowerShell
<a name="saml-pst"></a>

조직의 사용자가 AWS 리소스에 액세스할 수 있도록 하려면 보안, 감사 가능성, 규정 준수 및 역할 및 계정 분리를 지원하는 기능을 위해 반복 가능한 표준 인증 방법을 구성해야 합니다. 페더레이션 AWS APIs 액세스 없이 API에 액세스할 수 있는 기능을 사용자에게 제공하는 것이 일반적이지만 페더레이션 사용의 목적을 무력화하는 AWS Identity and Access Management (IAM) 사용자도 생성해야 합니다. 이 주제에서는 페더레이션 액세스 솔루션을 용이하게 AWS Tools for PowerShell 하는의 SAML(Security Assertion Markup Language) 지원에 대해 설명합니다.

의 SAML 지원을 AWS Tools for PowerShell 통해 사용자에게 서비스에 대한 페더레이션 액세스를 제공할 수 AWS 있습니다. SAML은 서비스 간에, 특히 자격 증명 공급자(예: [Active Directory Federation Services](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/ad-fs-overview))와 서비스 공급자(예: ) 간에 사용자 인증 및 권한 부여 데이터를 전송하기 위한 XML 기반 개방형 표준 형식입니다 AWS. SAML과 그 작동 방식에 대한 자세한 내용은 Wikipedia의 [SAML](https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language) 또는 Organization for the Advancement of Structured Information Standards(OASIS) 웹 사이트의 [SAML Technical Specifications](https://www.oasis-open.org/standard/saml/)를 참조하십시오. 의 SAML 지원 AWS Tools for PowerShell 은 SAML 2.0과 호환됩니다.

## 사전 조건
<a name="saml-pst-prerequisites"></a>

처음으로 SAML 지원을 사용하려면 먼저 다음 요소가 제 위치에 준비되어 있어야 합니다.
+ 조직 자격 증명만 사용하여 콘솔 액세스를 위해 AWS 계정과 올바르게 통합된 연동 자격 증명 솔루션입니다. 특히 Active Directory 페더레이션 서비스에 대해이 작업을 수행하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [SAML 2.0 페더레이션 정보](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html) 및 블로그 게시물, [Windows Active Directory, AD FS 및 SAML 2.0을 AWS 사용하여에 페더레이션 활성화](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)를 참조하세요. 블로그 게시물에서는 AD FS 2.0을 설명하지만, AD FS 3.0을 실행 중인 경우라도 단계는 비슷합니다.
+ 로컬 워크스테이션에 AWS Tools for PowerShell 설치된 버전 3.1.31.0 이상.

## 자격 증명 연동 사용자가 AWS 서비스 APIs에 대한 연동 액세스를 가져오는 방법
<a name="saml-pst-federated-process"></a>

다음 프로세스는 AD FS에서 Active Directory(AD) 사용자를 페더레이션하여 AWS 리소스에 액세스하는 방법을 개략적으로 설명합니다.

![\[Diagram showing federated user access flow to AWS resources via AD FS and Security Token Service.\]](http://docs.aws.amazon.com/ko_kr/powershell/v5/userguide/images/powershell_ADFSauth_using_vsd.png)


1. 연동 사용자 컴퓨터의 클라이언트는 AD FS에 대해 인증합니다.

1. 인증에 성공하면 AD FS는 사용자에게 SAML 어설션을 보냅니다.

1. 사용자의 클라이언트는 SAML 페더레이션 요청의 일부로 AWS Security Token Service (STS)에 SAML 어설션을 전송합니다.

1. STS는 사용자가 수임할 수 있는 역할에 대한 AWS 임시 자격 증명이 포함된 SAML 응답을 반환합니다.

1. 사용자는 요청 시 임시 자격 증명을 포함하여 AWS 서비스 APIs에 액세스합니다 AWS Tools for PowerShell.

## 에서 SAML 지원 작동 방식 AWS Tools for PowerShell
<a name="saml-pst-overview"></a>

이 섹션에서는 AWS Tools for PowerShell cmdlet이 사용자에 대한 SAML 기반 자격 증명 페더레이션 구성을 활성화하는 방법을 설명합니다.

![\[Diagram showing SAML-based federation flow between organization, AD FS, AWS, and service APIs.\]](http://docs.aws.amazon.com/ko_kr/powershell/v5/userguide/images/Powershell_SamlAuth_using_vsd.png)


1. AWS Tools for PowerShell 는 Windows 사용자의 현재 자격 증명을 사용하거나 사용자가 호출할 자격 증명이 필요한 cmdlet을 실행하려고 할 때 대화식으로 AD FS에 대해 인증합니다 AWS.

1. AD FS에서 사용자를 인증합니다.

1. AD FS는 어설션을 포함하는 SAML 2.0 인증 응답을 생성합니다. 어설션의 목적은 사용자에 대한 정보를 식별하고 제공하는 것입니다. AWS Tools for PowerShell 는 SAML 어설션에서 사용자의 승인된 역할 목록을 추출합니다.

1. AWS Tools for PowerShell 는 `AssumeRoleWithSAMLRequest` API 호출을 통해 요청된 역할의 Amazon 리소스 이름(ARN)을 포함한 SAML 요청을 STS로 전달합니다.

1. SAML 요청이 유효하면 STS는 AWS , `AccessKeyId`, `SecretAccessKey` 및 `SessionToken`을 포함하는 응답을 반환합니다. 이러한 자격 증명은 3,600초(1시간) 동안 유효합니다.

1. 이제 사용자는 사용자의 역할이 액세스할 권한이 있는 AWS 서비스 APIs로 작업할 수 있는 유효한 자격 증명을 갖게 됩니다.는 후속 AWS API 호출에 이러한 자격 증명을 AWS Tools for PowerShell 자동으로 적용하고 만료되면 자동으로 갱신합니다.
**참고**  
자격 증명이 만료되어 새 자격 증명이 필요하면 AWS Tools for PowerShell 은 AD FS에서 자동으로 재인증을 수행하여 이후 1시간 동안 유효한 새 자격 증명을 획득합니다. 도메인에 조인된 계정의 사용자의 경우, 이 프로세스가 자동으로 수행됩니다. 도메인에 가입되지 않은 계정의 경우는 사용자가 다시 인증하기 전에 자격 증명을 입력하도록 AWS Tools for PowerShell 프롬프트합니다.

## PowerShell SAML 구성 Cmdlet 사용 방법
<a name="saml-pst-config-cmdlets"></a>

AWS Tools for PowerShell 에는 SAML 지원을 제공하는 두 개의 새로운 cmdlet이 포함되어 있습니다.
+  `Set-AWSSamlEndpoint`는 AD FS 엔드포인트를 구성하고 표시 이름을 엔드포인트에 할당하며 원할 경우 엔드포인트의 인증 유형을 설명합니다.
+  `Set-AWSSamlRoleProfile`은 `Set-AWSSamlEndpoint` cmdlet에 제공했던 표시 이름을 지정하여 AD FS 엔드포인트와 연결할 사용자 계정 프로파일을 만들거나 편집합니다. 각 역할 프로파일은 사용자에게 수행할 수 있는 권한이 부여된 단일 역할로 매핑됩니다.

   AWS 자격 증명 프로필과 마찬가지로 역할 프로필에 표시 이름을 할당합니다. `Set-AWSCredential` cmdlet과 동일한 표시 이름을 사용하거나 AWS 서비스 API를 호출하는 cmdlet의 `-ProfileName` 파라미터 값으로 사용할 수 있습니다. APIs

새 AWS Tools for PowerShell 세션을 엽니다. PowerShell 3.0 이상을 실행 중인 경우, cmdlet 중 하나를 실행할 때 AWS Tools for PowerShell 모듈을 자동으로 가져옵니다. PowerShell 2.0을 실행하는 경우 다음 예제와 같이 ```Import-Module`` cmdlet을 실행하여 모듈을 수동으로 가져와야 합니다.

```
PS > Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"
```

### `Set-AWSSamlEndpoint` 및 `Set-AWSSamlRoleProfile` cmdlet을 실행하는 방법
<a name="how-to-run-the-set-awssamlendpoint-and-set-awssamlroleprofile-cmdlets"></a>

1. 먼저 AD FS 시스템에 대한 엔드포인트 설정을 구성합니다. 가장 간단한 방법은 이 단계처럼 변수에 엔드포인트를 저장하는 것입니다. 계정 ID 및 AD FS 호스트 이름 자리 표시자를 자신의 고유 계정 ID와 AD FS 호스트 이름으로 대체해야 합니다. `Endpoint` 파라미터에 AD FS 호스트 이름을 지정합니다.

   ```
   PS > $endpoint = "https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices"
   ```

1. 엔드포인트 설정을 만들려면 `Set-AWSSamlEndpoint` cmdlet을 실행하여 `AuthenticationType` 파라미터에 대해 올바른 값을 지정합니다. 유효한 값으로는 `Basic`, `Digest`, `Kerberos`, `Negotiate` 및 `NTLM`이 있습니다. 이 파라미터를 지정하지 않는 경우 기본값은 `Kerberos`입니다.

   ```
   PS > $epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs ADFS-Demo -AuthenticationType NTLM
   ```

   이 cmdlet은 `-StoreAs` 파라미터를 사용하여 지정한 표시 이름을 반환하므로 다음 줄에서 `Set-AWSSamlRoleProfile`을 실행할 때 이 이름을 사용할 수 있습니다.

1. 이제 `Set-AWSSamlRoleProfile` cmdlet을 실행하여 AD FS 자격 증명 공급자를 대상으로 인증을 수행하고 사용자에게 수행할 수 있는 권한이 부여된 역할 세트(SAML 어설션에서)를 가져올 수 있습니다.

   `Set-AWSSamlRoleProfile` cmdlet은 반환되는 역할 세트를 사용하여 사용자에게 지정된 프로파일과 연결할 역할을 선택하라는 메시지를 표시하거나, 파라미터에 제공된 역할 데이터가 존재하는지 확인합니다(없는 경우 사용자에게 선택하라는 메시지가 표시됨). 사용자에게 한 역할에만 권한이 부여된 경우 cmdlet은 사용자에게 메시지를 표시하지 않고 해당 역할을 프로파일과 자동으로 연결합니다. 도메인에 조인된 사용을 위해 프로파일을 설정할 때는 자격 증명을 제공할 필요가 없습니다.

   ```
   PS > Set-AWSSamlRoleProfile -StoreAs SAMLDemoProfile -EndpointName $epName
   ```

   또는 non-domain-joined 계정의 경우 다음 줄과 같이 Active Directory 자격 증명을 제공한 다음 사용자가 액세스할 수 있는 AWS 역할을 선택할 수 있습니다. 이는 조직 내에서 역할을 구분하기 위해 여러 Active Directory 사용자 계정이 있는 경우(예를 들면 관리 기능)에 유용합니다.

   ```
   PS > $credential = Get-Credential -Message "Enter the domain credentials for the endpoint"
   PS > Set-AWSSamlRoleProfile -EndpointName $epName -NetworkCredential $credential -StoreAs SAMLDemoProfile
   ```

1. 어느 경우든, `Set-AWSSamlRoleProfile` cmdlet은 프로파일에 저장되어야 할 역할을 선택하라는 메시지를 표시합니다. 다음 예에서는 `ADFS-Dev`와 `ADFS-Production`이라는 두 가지 사용 가능한 역할을 보여 줍니다. IAM 역할은 AD FS 관리자에 의해 AD 로그인 자격 증명과 연결됩니다.

   ```
   Select Role
   Select the role to be assumed when this profile is active
   [1] 1 - ADFS-Dev  [2] 2 - ADFS-Production  [?] Help (default is "1"):
   ```

   또는 `RoleARN`, `PrincipalARN` 및 `NetworkCredential` 파라미터(선택 사항)를 입력하여 프롬프트 메시지 없이 역할을 지정할 수 있습니다. 지정된 역할이 인증 시 반환된 어설션에 나열되어 있지 않으면 사용자에게 사용 가능한 역할 중에서 선택하라는 메시지가 표시됩니다.

   ```
   PS > $params = @{ "NetworkCredential"=$credential, "PrincipalARN"="{arn:aws:iam::012345678912:saml-provider/ADFS}", "RoleARN"="{arn:aws:iam::012345678912:role/ADFS-Dev}"
   }
   PS > $epName | Set-AWSSamlRoleProfile @params -StoreAs SAMLDemoProfile1 -Verbose
   ```

1. 다음 코드에서처럼 `StoreAllRoles` 파라미터를 추가하여 단일 명령을 통해 모든 역할에 대한 프로파일을 만들 수 있습니다. 역할 이름이 프로파일 이름으로 사용됩니다.

   ```
   PS > Set-AWSSamlRoleProfile -EndpointName $epName -StoreAllRoles
   ADFS-Dev
   ADFS-Production
   ```

### 역할 프로파일을 사용하여 AWS 자격 증명이 필요한 Cmdlet을 실행하는 방법
<a name="how-to-use-role-profiles-to-run-cmdlets-that-require-aws-credentials"></a>

 AWS 자격 증명이 필요한 cmdlet을 실행하려면 AWS 공유 자격 증명 파일에 정의된 역할 프로파일을 사용할 수 있습니다. 프로파일에 설명된 역할에 대한 임시 AWS 자격 증명을 자동으로 가져오려면 역할 프로파일의 이름을에 입력합니다`Set-AWSCredential`(또는의 `ProfileName` 파라미터 값으로 제공 AWS Tools for PowerShell).

한 번에 역할 프로파일 하나만 사용할 수 있지만 셸 세션 내에서 프로파일 간에 전환할 수 있습니다. `Set-AWSCredential` cmdlet은 인증하지 않고 실행 시 자체적으로 자격 증명을 가져옵니다. 이 cmdlet은 사용자가 지정된 역할 프로파일을 사용하고자 한다고 기록합니다. AWS 자격 증명이 필요한 cmdlet을 실행할 때까지는 인증이나 자격 증명 요청이 발생하지 않습니다.

이제 `SAMLDemoProfile` 프로파일에서 얻은 임시 AWS 자격 증명을 사용하여 AWS 서비스 APIs. 다음 단원에서는 역할 프로파일 사용법 예를 보여 줍니다.

### 예제 1: `Set-AWSCredential`을 사용하여 기본 역할 지정
<a name="example-1-set-a-default-role-with-set-awscredential"></a>

이 예제에서는를 사용하여 AWS Tools for PowerShell 세션의 기본 역할을 설정합니다`Set-AWSCredential`. 그러고 나면 자격 증명이 필요하고 지정된 역할에 의해 권한이 부여된 cmdlet을 실행할 수 있습니다. 이 예제는 미국 서부(오레곤) 리전에서 `Set-AWSCredential` cmdlet을 사용하여 지정한 프로파일과 연결되어 있는 모든 Amazon Elastic Compute Cloud 인스턴스를 나열합니다.

```
PS > Set-AWSCredential -ProfileName SAMLDemoProfile
PS > Get-EC2Instance -Region us-west-2 | Format-Table -Property Instances,GroupNames

Instances                                                   GroupNames
---------                                                   ----------
{TestInstance1}                                             {default}
{TestInstance2}                                             {}
{TestInstance3}                                             {launch-wizard-6}
{TestInstance4}                                             {default}
{TestInstance5}                                             {}
{TestInstance6}                                             {AWS-OpsWorks-Default-Server}
```

### 예제 2: PowerShell 세션 중 역할 프로파일 변경
<a name="example-2-change-role-profiles-during-a-powershell-session"></a>

이 예시에서는 `SAMLDemoProfile` 프로파일과 연결된 역할의 AWS 계정에서 사용 가능한 모든 Amazon S3 버킷을 나열합니다. 이 예제는 AWS Tools for PowerShell 세션의 앞부분에서 다른 프로파일을 사용했을 수도 있지만, 이를 지원하는 cmdlet이 있는 `-ProfileName` 파라미터에 대해 다른 값을 지정하여 프로파일을 변경할 수 있음을 보여줍니다. 이 작업은 PowerShell 명령줄을 통해 Amazon S3을 관리하는 관리자에게 일반적인 작업입니다.

```
PS > Get-S3Bucket -ProfileName SAMLDemoProfile

CreationDate                                                BucketName
------------                                                ----------
7/25/2013 3:16:56 AM                                        amzn-s3-demo-bucket
4/15/2015 12:46:50 AM                                       amzn-s3-demo-bucket1
4/15/2015 6:15:53 AM                                        amzn-s3-demo-bucket2
1/12/2015 11:20:16 PM                                       amzn-s3-demo-bucket3
```

`Get-S3Bucket` cmdlet은 `Set-AWSSamlRoleProfile` cmdlet을 실행하여 생성된 프로파일의 이름을 지정합니다. 이 명령은 (예를 들면 `Set-AWSCredential` cmdlet을 실행하여) 세션의 조기에 역할 프로파일을 설정했으며 `Get-S3Bucket` cmdlet에 대해 다른 역할 프로파일을 사용하려는 경우에 유용할 수 있습니다. 프로파일 관리자는 임시 자격 증명을 `Get-S3Bucket` cmdlet에 사용할 수 있도록 설정합니다.

자격 증명은 1시간(STS에서 적용되는 제한)이 경과된 후 만료되지만, AWS Tools for PowerShell 는 도구가 현재 자격 증명이 만료되었음을 감지할 때 새 SAML 어설션을 요청하여 자격 증명을 자동으로 새로 고칩니다.

도메인에 조인된 사용자의 경우, 인증 시 현재 사용자의 Windows 자격 증명이 사용되므로 이 프로세스가 중단 없이 발생합니다. non-domain-joined 사용자 계정의 경우 사용자 암호를 요청하는 PowerShell 자격 증명 프롬프트를 AWS Tools for PowerShell 표시합니다. 사용자는 사용자를 재인증하고 새 어설션을 가져오는 데 사용되는 자격 증명을 제공합니다.

### 예제 3: 리전의 인스턴스 가져오기
<a name="example-3-get-instances-in-a-region"></a>

다음 예제는 `ADFS-Production` 프로파일에서 사용된 계정과 연결된 아시아 태평양(시드니) 리전의 모든 Amazon EC2 인스턴스를 나열합니다. 이 명령은 리전의 모든 Amazon EC2 인스턴스를 반환하는 유용한 명령입니다.

```
PS > (Get-Ec2Instance -ProfileName ADFS-Production -Region ap-southeast-2).Instances | Select InstanceType, @{Name="Servername";Expression={$_.tags | where key -eq "Name" | Select Value -Expand Value}}

 InstanceType                                                Servername
 ------------                                                ----------
 t2.small                                                    DC2
 t1.micro                                                    NAT1
 t1.micro                                                    RDGW1
 t1.micro                                                    RDGW2
 t1.micro                                                    NAT2
 t2.small                                                    DC1
 t2.micro                                                    BUILD
```

## 추가 읽기 자료
<a name="saml-pst-reading"></a>

연동 API 액세스를 구현하는 방법에 대한 일반적인 정보는 [How to Implement a General Solution for Federated API/CLI Access Using SAML 2.0](https://aws.amazon.com/blogs/security/how-to-implement-a-general-solution-for-federated-apicli-access-using-saml-2-0/)을 참조하십시오.

지원 질문이나 의견은 [PowerShell 스크립팅](https://forums.aws.amazon.com/forum.jspa?forumID=149)용 AWS 개발자 포럼 또는 [.NET Development](https://forums.aws.amazon.com/forum.jspa?forumID=61)를 참조하세요.

# 관찰성
<a name="observability"></a>

관찰성은 시스템의 현재 상태를 내보내는 데이터에서 추론할 수 있는 범위입니다. 방출되는 데이터를 일반적으로 원격 측정이라고 합니다. AWS 서비스 사용 시 원격 측정에 대한 자세한 내용은 [AWS SDK for .NET 개발자 안내서](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/)의 [관찰성을](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/observability.html) 참조하세요.

다음 코드는에서 관찰성을 활성화하는 방법의 예를 보여줍니다 AWS Tools for PowerShell.

```
<#
    This is an example of generating telemetry for AWS Tools for PowerShell.
    Each cmdlet that interacts with an Amazon Web Service creates a trace containing spans
    for underlying processes and AWS SDK for .NET operations.
    This example is written using PowerShell 7 and .NET 8.
    It requires the installation of the .NET CLI tool.
    Note that implementation varies by the exporter/endpoint, which is not specified in this example.
    For more information, see https://opentelemetry.io/docs/languages/net/exporters/.
#>

# Set this value to a common folder path on your computer for local development of code repositories.
$devProjectsPath = [System.IO.Path]::Join('C:', 'Dev', 'Repos')

# If these values are changed, update the hardcoded method invocation toward the end of this script.
# Values must follow constraints for namespaces and classes.
$telemetryProjectName = 'ExampleAWSPowerShellTelemetryImplementation'
$serviceName = 'ExamplePowerShellService'

# This example supposes that the OTLP exporter requires these two properties,
# but some exporters require different properties or no properties.
$telemetryEndPoint = 'https://example-endpoint-provider.io'
$telemetryHeaders = 'x-example-header=abc123'

$dllsPath = [System.IO.Path]::Join($devProjectsPath, $telemetryProjectName, 'bin', 'Release', 'net8.0', 'publish')

$telemetryProjectPath = [System.IO.Path]::Join($devProjectsPath, $telemetryProjectName)

# This script is designed to recreate the example telemetry project each time it's executed.
Remove-Item -Path $telemetryProjectPath -Recurse -Force -ErrorAction 'SilentlyContinue'
$null = New-Item -Path $devProjectsPath -Name $telemetryProjectName -ItemType 'Directory'

<#
    Create and build a C#-based .NET 8 project that implements
    OpenTelemetry Instrumentation for the AWS Tools for PowerShell.
#>

Set-Location -Path $telemetryProjectPath

dotnet new classlib

# Other exporters are available.
# For more information, see https://opentelemetry.io/docs/languages/net/exporters/.
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
dotnet add package OpenTelemetry.Instrumentation.AWS

$classContent = @"
using OpenTelemetry;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

namespace Example.Telemetry;

public class AWSToolsForPowerShellTelemetry
{
    public static void InitializeAWSInstrumentation()
    {
        Sdk.CreateTracerProviderBuilder()
        .ConfigureResource(e => e.AddService("$ServiceName"))
        .AddAWSInstrumentation()
        // Exporters vary so options might need to be changed or omitted.
        .AddOtlpExporter(options =>
        {
            options.Endpoint = new Uri("$telemetryEndPoint");
            options.Headers = "$telemetryHeaders";
        })
        .Build();
    }
}
"@

$csFilePath = [System.IO.Path]::Join($telemetryProjectPath, ($serviceName + '.cs'))
Set-Content -Path $csFilePath -Value $classContent

dotnet build
dotnet publish -c Release

<#
    Add additional modules here for any other cmdlets that you require. 
    Beyond this point, additional AWS Tools for PowerShell modules will fail to import
    due to conflicts with the AWS SDK for .NET assemblies that are added next.
#>

Import-Module -Name 'AWS.Tools.Common'
Import-Module -Name 'AWS.Tools.DynamoDBv2'


# Load assemblies for the telemetry project, excluding the AWS SDK for .NET assemblies
# that were already loaded by importing AWS Tools for PowerShell modules.
$dlls = (Get-ChildItem $dllsPath -Filter *.dll -Recurse ).FullName
$AWSSDKAssembliesAlreadyLoaded = [Threading.Thread]::GetDomain().GetAssemblies().Location | Where-Object {$_ -like '*AWSSDK*' } | Split-Path -Leaf
$dlls.Where{$AWSSDKAssembliesAlreadyLoaded -notcontains ($_ | Split-Path -Leaf)}.ForEach{Add-Type -Path $_}

# Invoke the method defined earlier in this script.
[Example.Telemetry.AWSToolsForPowerShellTelemetry]::InitializeAWSInstrumentation()

<#
    Now telemetry will be exported for AWS Tools for PowerShell cmdlets
    that are invoked directly or indirectly.
    Execute this cmdlet or execute your own PowerShell script.
#>
Get-DDBTable -TableName 'DotNetTests-HashTable' -Region 'us-east-1'
```

# Cmdlet 검색 및 별칭
<a name="pstools-discovery-aliases"></a>

이 섹션에서는에서 지원하는 서비스를 나열하는 방법 AWS Tools for PowerShell, 해당 서비스를 AWS Tools for PowerShell 지원하기 위해에서 제공하는 cmdlet 세트를 표시하는 방법, 해당 서비스에 액세스할 대체 cmdlet 이름(별칭이라고도 함)을 찾는 방법을 보여줍니다.

## Cmdlet 검색
<a name="pstools-cmdlet-discovery"></a>

모든 AWS 서비스 작업(또는 APIs)은 각 서비스의 API 참조 가이드에 설명되어 있습니다. 예를 들면 [IAM API 참조](https://docs.aws.amazon.com/IAM/latest/APIReference/)를 참조하세요. 대부분의 경우 AWS 서비스 API와 AWS PowerShell cmdlet 간에 one-to-one 대응이 있습니다. AWS 서비스 API 이름에 해당하는 cmdlet 이름을 가져오려면 `-ApiOperation` 파라미터와 AWS 서비스 API 이름으로 `Get-AWSCmdletName` cmdlet을 실행합니다 AWS . 예를 들어 사용 가능한 `DescribeInstances` AWS 서비스 API를 기반으로 가능한 모든 cmdlet 이름을 가져오려면 다음 명령을 실행합니다.

```
PS > Get-AWSCmdletName -ApiOperation DescribeInstances

CmdletName        ServiceOperation    ServiceName                    CmdletNounPrefix
----------        ----------------    -----------                    ----------------
Get-EC2Instance   DescribeInstances   Amazon Elastic Compute Cloud   EC2
Get-GMLInstance   DescribeInstances   Amazon GameLift Service        GML
```

`-ApiOperation` 매개 변수가 기본 매개 변수이므로 매개 변수 이름을 생략할 수 있습니다. 다음 예제는 이전 예제와 동일합니다.

```
PS > Get-AWSCmdletName DescribeInstances
```

API와 서비스의 이름을 모두 알고 있는 경우 cmdlet 명사 접두사 또는 AWS 서비스 이름의 일부와 함께 `-Service` 파라미터를 포함할 수 있습니다. 예를 들면 Amazon EC2의 cmdlet 명사 접두사는 `EC2`입니다. Amazon EC2 서비스에서 `DescribeInstances` API에 해당하는 cmdlet 이름을 가져오려면 다음 명령 중 하나를 실행합니다. 이들은 모두 동일한 출력의 결과입니다.

```
PS > Get-AWSCmdletName -ApiOperation DescribeInstances -Service EC2
PS > Get-AWSCmdletName -ApiOperation DescribeInstances -Service Compute
PS > Get-AWSCmdletName -ApiOperation DescribeInstances -Service "Compute Cloud"

CmdletName        ServiceOperation    ServiceName                    CmdletNounPrefix
----------        ----------------    -----------                    ----------------
Get-EC2Instance   DescribeInstances   Amazon Elastic Compute Cloud   EC2
```

이러한 명령의 파라미터 값은 대/소문자를 구분합니다.

원하는 AWS 서비스 API 또는 AWS 서비스의 이름을 모르는 경우 일치시킬 패턴 및 `-ApiOperation` 파라미터와 함께 `-MatchWithRegex` 파라미터를 사용할 수 있습니다. 예를 들어 `SecurityGroup`을 포함하는 사용 가능한 cmdlet 이름을 모두 가져오려면 다음 명령을 실행합니다.

```
PS > Get-AWSCmdletName -ApiOperation SecurityGroup -MatchWithRegex

CmdletName                                    ServiceOperation                            ServiceName                        CmdletNounPrefix
----------                                    ----------------                            -----------                        ----------------
Approve-ECCacheSecurityGroupIngress           AuthorizeCacheSecurityGroupIngress          Amazon ElastiCache                 EC
Get-ECCacheSecurityGroup                      DescribeCacheSecurityGroups                 Amazon ElastiCache                 EC
New-ECCacheSecurityGroup                      CreateCacheSecurityGroup                    Amazon ElastiCache                 EC
Remove-ECCacheSecurityGroup                   DeleteCacheSecurityGroup                    Amazon ElastiCache                 EC
Revoke-ECCacheSecurityGroupIngress            RevokeCacheSecurityGroupIngress             Amazon ElastiCache                 EC
Add-EC2SecurityGroupToClientVpnTargetNetwrk   ApplySecurityGroupsToClientVpnTargetNetwork Amazon Elastic Compute Cloud       EC2
Get-EC2SecurityGroup                          DescribeSecurityGroups                      Amazon Elastic Compute Cloud       EC2
Get-EC2SecurityGroupReference                 DescribeSecurityGroupReferences             Amazon Elastic Compute Cloud       EC2
Get-EC2StaleSecurityGroup                     DescribeStaleSecurityGroups                 Amazon Elastic Compute Cloud       EC2
Grant-EC2SecurityGroupEgress                  AuthorizeSecurityGroupEgress                Amazon Elastic Compute Cloud       EC2
Grant-EC2SecurityGroupIngress                 AuthorizeSecurityGroupIngress               Amazon Elastic Compute Cloud       EC2
New-EC2SecurityGroup                          CreateSecurityGroup                         Amazon Elastic Compute Cloud       EC2
Remove-EC2SecurityGroup                       DeleteSecurityGroup                         Amazon Elastic Compute Cloud       EC2
Revoke-EC2SecurityGroupEgress                 RevokeSecurityGroupEgress                   Amazon Elastic Compute Cloud       EC2
Revoke-EC2SecurityGroupIngress                RevokeSecurityGroupIngress                  Amazon Elastic Compute Cloud       EC2
Update-EC2SecurityGroupRuleEgressDescription  UpdateSecurityGroupRuleDescriptionsEgress   Amazon Elastic Compute Cloud       EC2
Update-EC2SecurityGroupRuleIngressDescription UpdateSecurityGroupRuleDescriptionsIngress  Amazon Elastic Compute Cloud       EC2
Edit-EFSMountTargetSecurityGroup              ModifyMountTargetSecurityGroups             Amazon Elastic File System         EFS
Get-EFSMountTargetSecurityGroup               DescribeMountTargetSecurityGroups           Amazon Elastic File System         EFS
Join-ELBSecurityGroupToLoadBalancer           ApplySecurityGroupsToLoadBalancer           Elastic Load Balancing             ELB
Set-ELB2SecurityGroup                         SetSecurityGroups                           Elastic Load Balancing V2          ELB2
Enable-RDSDBSecurityGroupIngress              AuthorizeDBSecurityGroupIngress             Amazon Relational Database Service RDS
Get-RDSDBSecurityGroup                        DescribeDBSecurityGroups                    Amazon Relational Database Service RDS
New-RDSDBSecurityGroup                        CreateDBSecurityGroup                       Amazon Relational Database Service RDS
Remove-RDSDBSecurityGroup                     DeleteDBSecurityGroup                       Amazon Relational Database Service RDS
Revoke-RDSDBSecurityGroupIngress              RevokeDBSecurityGroupIngress                Amazon Relational Database Service RDS
Approve-RSClusterSecurityGroupIngress         AuthorizeClusterSecurityGroupIngress        Amazon Redshift                    RS
Get-RSClusterSecurityGroup                    DescribeClusterSecurityGroups               Amazon Redshift                    RS
New-RSClusterSecurityGroup                    CreateClusterSecurityGroup                  Amazon Redshift                    RS
Remove-RSClusterSecurityGroup                 DeleteClusterSecurityGroup                  Amazon Redshift                    RS
Revoke-RSClusterSecurityGroupIngress          RevokeClusterSecurityGroupIngress           Amazon Redshift                    RS
```

 AWS 서비스 API가 아닌 AWS 서비스 이름을 알고 있는 경우 `-MatchWithRegex` 파라미터와 `-Service` 파라미터를 모두 포함하여 검색 범위를 단일 서비스로 축소합니다. 예를 들어 Amazon EC2 서비스에서만 `SecurityGroup`을 포함하는 모든 cmdlet 이름을 모두 가져오려면 다음 명령을 실행합니다.

```
PS > Get-AWSCmdletName -ApiOperation SecurityGroup -MatchWithRegex -Service EC2

CmdletName                                    ServiceOperation                            ServiceName                  CmdletNounPrefix
----------                                    ----------------                            -----------                  ----------------
Add-EC2SecurityGroupToClientVpnTargetNetwrk   ApplySecurityGroupsToClientVpnTargetNetwork Amazon Elastic Compute Cloud EC2
Get-EC2SecurityGroup                          DescribeSecurityGroups                      Amazon Elastic Compute Cloud EC2
Get-EC2SecurityGroupReference                 DescribeSecurityGroupReferences             Amazon Elastic Compute Cloud EC2
Get-EC2StaleSecurityGroup                     DescribeStaleSecurityGroups                 Amazon Elastic Compute Cloud EC2
Grant-EC2SecurityGroupEgress                  AuthorizeSecurityGroupEgress                Amazon Elastic Compute Cloud EC2
Grant-EC2SecurityGroupIngress                 AuthorizeSecurityGroupIngress               Amazon Elastic Compute Cloud EC2
New-EC2SecurityGroup                          CreateSecurityGroup                         Amazon Elastic Compute Cloud EC2
Remove-EC2SecurityGroup                       DeleteSecurityGroup                         Amazon Elastic Compute Cloud EC2
Revoke-EC2SecurityGroupEgress                 RevokeSecurityGroupEgress                   Amazon Elastic Compute Cloud EC2
Revoke-EC2SecurityGroupIngress                RevokeSecurityGroupIngress                  Amazon Elastic Compute Cloud EC2
Update-EC2SecurityGroupRuleEgressDescription  UpdateSecurityGroupRuleDescriptionsEgress   Amazon Elastic Compute Cloud EC2
Update-EC2SecurityGroupRuleIngressDescription UpdateSecurityGroupRuleDescriptionsIngress  Amazon Elastic Compute Cloud EC2
```

 AWS Command Line Interface (AWS CLI) 명령의 이름을 알고 있는 경우 `-AwsCliCommand` 파라미터와 원하는 AWS CLI 명령 이름을 사용하여 동일한 API를 기반으로 하는 cmdlet의 이름을 가져올 수 있습니다. 예를 들어 Amazon EC2 서비스의 `authorize-security-group-ingress` AWS CLI 명령 호출에 해당하는 cmdlet 이름을 가져오려면 다음 명령을 실행합니다.

```
PS > Get-AWSCmdletName -AwsCliCommand "aws ec2 authorize-security-group-ingress"

CmdletName                    ServiceOperation              ServiceName                  CmdletNounPrefix
----------                    ----------------              -----------                  ----------------
Grant-EC2SecurityGroupIngress AuthorizeSecurityGroupIngress Amazon Elastic Compute Cloud EC2
```

`Get-AWSCmdletName` cmdlet은 서비스와 AWS API를 식별하기에 충분한 AWS CLI 명령 이름만 필요합니다.

Tools for PowerShell Core의 모든 cmdlet의 목록을 가져오려면 다음 예제에 나와 있는 것처럼 PowerShell `Get-Command` cmdlet을 실행합니다.

```
PS > Get-Command -Module AWSPowerShell.NetCore
```

`-Module AWSPowerShell`과 동일한 명령을 실행하여 AWS Tools for Windows PowerShell의 cmdlet을 확인할 수 있습니다.

`Get-Command` cmdlet은 cmdlet 목록을 알파벳순으로 생성합니다. 기본적으로 목록은 PowerShell 명사가 아닌 PowerShell 동사로 정렬됩니다.

그와 달리 서비스별로 결과를 정렬하려면 다음 명령을 실행합니다.

```
PS > Get-Command -Module AWSPowerShell.NetCore | Sort-Object Noun,Verb
```

`Get-Command` cmdlet에 의해 반환되는 cmdlet을 필터링하려면 출력을 PowerShell `Select-String` cmdlet에 파이프합니다. 예를 들어 AWS 리전에서 작동하는 cmdlet 세트를 보려면 다음 명령을 실행합니다.

```
PS > Get-Command -Module AWSPowerShell.NetCore | Select-String region

Clear-DefaultAWSRegion
Copy-HSM2BackupToRegion
Get-AWSRegion
Get-DefaultAWSRegion
Get-EC2Region
Get-LSRegionList
Get-RDSSourceRegion
Set-DefaultAWSRegion
```

또한 cmdlet 명사의 서비스 접두사를 필터링하여 특정 서비스에 대한 cmdlet을 찾을 수도 있습니다. 사용 가능한 서비스 접두사 목록을 보려면 `Get-AWSPowerShellVersion -ListServiceVersionInfo`을 실행합니다. 다음 예제는 Amazon CloudWatch Events 서비스를 지원하는 cmdlet을 반환합니다.

```
PS > Get-Command -Module AWSPowerShell -Noun CWE*

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Add-CWEResourceTag                                 3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Disable-CWEEventSource                             3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Disable-CWERule                                    3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Enable-CWEEventSource                              3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Enable-CWERule                                     3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWEEventBus                                    3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWEEventBusList                                3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWEEventSource                                 3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWEEventSourceList                             3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWEPartnerEventSource                          3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWEPartnerEventSourceAccountList               3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWEPartnerEventSourceList                      3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWEResourceTag                                 3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWERule                                        3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWERuleDetail                                  3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWERuleNamesByTarget                           3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Get-CWETargetsByRule                               3.3.563.1  AWSPowerShell.NetCore
Cmdlet          New-CWEEventBus                                    3.3.563.1  AWSPowerShell.NetCore
Cmdlet          New-CWEPartnerEventSource                          3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Remove-CWEEventBus                                 3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Remove-CWEPartnerEventSource                       3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Remove-CWEPermission                               3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Remove-CWEResourceTag                              3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Remove-CWERule                                     3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Remove-CWETarget                                   3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Test-CWEEventPattern                               3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Write-CWEEvent                                     3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Write-CWEPartnerEvent                              3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Write-CWEPermission                                3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Write-CWERule                                      3.3.563.1  AWSPowerShell.NetCore
Cmdlet          Write-CWETarget                                    3.3.563.1  AWSPowerShell.NetCore
```

## Cmdlet 이름 지정 및 별칭
<a name="pstools-cmdlet-naming-aliases"></a>

각 서비스에 AWS Tools for PowerShell 대한의 cmdlet은 서비스용 AWS SDK에서 제공하는 방법을 기반으로 합니다. 하지만 PowerShell의 이름 지정 규칙 때문에 cmdlet의 이름이 해당 API 호출이나 기반이 되는 메서드의 이름과 다를 수 있습니다. 예를 들어 `Get-EC2Instance` cmdlet은 Amazon EC2 `DescribeInstances` 메서드를 기반으로 합니다.

경우에 따라, cmdlet 이름이 메서드 이름과 비슷하지만, 실제로는 다른 기능을 수행할 수도 있습니다. 예를 들어 Amazon S3`GetObject` 메서드는 Amazon S3 객체를 검색합니다. 그러나, `Get-S3Object` cmdlet은 객체 자체보다 Amazon S3 객체에 대한 *정보*를 반환합니다.

```
PS > Get-S3Object -BucketName text-content -Key aws-tech-docs

ETag         : "df000002a0fe0000f3c000004EXAMPLE"
BucketName   : aws-tech-docs
Key          : javascript/frameset.js
LastModified : 6/13/2011 1:24:18 PM
Owner        : Amazon.S3.Model.Owner
Size         : 512
StorageClass : STANDARD
```

를 사용하여 S3 객체를 가져오려면 `Read-S3Object` cmdlet을 AWS Tools for PowerShell실행합니다.

```
PS > Read-S3Object -BucketName text-content -Key text-object.txt -file c:\tmp\text-object-download.text

Mode          LastWriteTime            Length Name
----          -------------            ------ ----
-a---         11/5/2012   7:29 PM      20622  text-object-download.text
```

**참고**  
cmdlet에 대한 AWS cmdlet 도움말은 cmdlet의 기반이 되는 AWS SDK API의 이름을 제공합니다.  
표준 PowerShell 동사와 예상 의미에 대한 자세한 내용은 [PowerShell 명령에 대해 승인된 동사](https://learn.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands)를 참조하십시오.

`Remove` 동사를 사용하는 모든 AWS cmdlet과 `-Terminate` 파라미터를 추가할 때 `Stop-EC2Instance` cmdlet은 계속하기 전에 확인 메시지를 표시합니다. 확인 메시지를 건너뛰려면 명령에 `-Force` 파라미터를 추가합니다.

**중요**  
AWS cmdlet은 `-WhatIf` 스위치를 지원하지 않습니다.

### 에일리어스
<a name="pstools-aliases"></a>

를 설정하면 많은 AWS cmdlet에 대한 별칭이 포함된 별칭 파일이 AWS Tools for PowerShell 설치됩니다. 이러한 별칭은 cmdlet 이름보다 더 직관적입니다. 예를 들어 서비스 이름과 AWS SDK 메서드 이름은 일부 별칭에서 PowerShell 동사와 명사를 대체합니다. 예를 들면 `EC2-DescribeInstances` 별칭이 있습니다.

그 밖의 별칭에는, 표준 PowerShell 표기 규칙을 따르지는 않지만 실제 작업을 더 잘 설명할 수 있는 동사가 사용됩니다. 예를 들면 별칭 파일은 `Get-S3Content` 별칭을 `Read-S3Object` cmdlet으로 매핑합니다.

```
PS > Set-Alias -Name Get-S3Content -Value Read-S3Object
```

별칭 파일은 AWS Tools for PowerShell 설치 디렉터리에 있습니다. 별칭을 환경에 로드하려면 파일을 *도트 소싱(dot-sourcing)*합니다. 다음은 Windows용 예입니다.

```
PS > . "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowershell\AWSAliases.ps1"
```

Linux 또는 macOS 셸의 경우 다음과 같이 보일 수 있습니다.

```
. ~/.local/share/powershell/Modules/AWSPowerShell.NetCore/3.3.563.1/AWSAliases.ps1
```

모든 AWS Tools for PowerShell 별칭을 표시하려면 다음 명령을 실행합니다. 이 명령은 PowerShell `Where-Object` cmdlet의 `?` 별칭과 `Source` 속성을 사용하여 `AWSPowerShell.NetCore` 모듈에서 나온 별칭만 필터링합니다.

```
PS > Get-Alias | ? Source -like "AWSPowerShell.NetCore"

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Add-ASInstances                                    3.3.343.0  AWSPowerShell
Alias           Add-CTTag                                          3.3.343.0  AWSPowerShell
Alias           Add-DPTags                                         3.3.343.0  AWSPowerShell
Alias           Add-DSIpRoutes                                     3.3.343.0  AWSPowerShell
Alias           Add-ELBTags                                        3.3.343.0  AWSPowerShell
Alias           Add-EMRTag                                         3.3.343.0  AWSPowerShell
Alias           Add-ESTag                                          3.3.343.0  AWSPowerShell
Alias           Add-MLTag                                          3.3.343.0  AWSPowerShell
Alias           Clear-AWSCredentials                               3.3.343.0  AWSPowerShell
Alias           Clear-AWSDefaults                                  3.3.343.0  AWSPowerShell
Alias           Dismount-ASInstances                               3.3.343.0  AWSPowerShell
Alias           Edit-EC2Hosts                                      3.3.343.0  AWSPowerShell
Alias           Edit-RSClusterIamRoles                             3.3.343.0  AWSPowerShell
Alias           Enable-ORGAllFeatures                              3.3.343.0  AWSPowerShell
Alias           Find-CTEvents                                      3.3.343.0  AWSPowerShell
Alias           Get-ASACases                                       3.3.343.0  AWSPowerShell
Alias           Get-ASAccountLimits                                3.3.343.0  AWSPowerShell
Alias           Get-ASACommunications                              3.3.343.0  AWSPowerShell
Alias           Get-ASAServices                                    3.3.343.0  AWSPowerShell
Alias           Get-ASASeverityLevels                              3.3.343.0  AWSPowerShell
Alias           Get-ASATrustedAdvisorCheckRefreshStatuses          3.3.343.0  AWSPowerShell
Alias           Get-ASATrustedAdvisorChecks                        3.3.343.0  AWSPowerShell
Alias           Get-ASATrustedAdvisorCheckSummaries                3.3.343.0  AWSPowerShell
Alias           Get-ASLifecycleHooks                               3.3.343.0  AWSPowerShell
Alias           Get-ASLifecycleHookTypes                           3.3.343.0  AWSPowerShell
Alias           Get-AWSCredentials                                 3.3.343.0  AWSPowerShell
Alias           Get-CDApplications                                 3.3.343.0  AWSPowerShell
Alias           Get-CDDeployments                                  3.3.343.0  AWSPowerShell
Alias           Get-CFCloudFrontOriginAccessIdentities             3.3.343.0  AWSPowerShell
Alias           Get-CFDistributions                                3.3.343.0  AWSPowerShell
Alias           Get-CFGConfigRules                                 3.3.343.0  AWSPowerShell
Alias           Get-CFGConfigurationRecorders                      3.3.343.0  AWSPowerShell
Alias           Get-CFGDeliveryChannels                            3.3.343.0  AWSPowerShell
Alias           Get-CFInvalidations                                3.3.343.0  AWSPowerShell
Alias           Get-CFNAccountLimits                               3.3.343.0  AWSPowerShell
Alias           Get-CFNStackEvents                                 3.3.343.0  AWSPowerShell

...
```

이 파일에 사용자 지정 별칭을 추가하려면 PowerShell의 `$MaximumAliasCount` [기본 설정 변수](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-6)를 5500보다 큰 값으로 늘려야 할 수 있습니다. 기본값은 4096이며, 이 값을 최대 32768까지 높일 수 있습니다. 이렇게 하려면 다음을 실행합니다.

```
PS > $MaximumAliasCount = 32768
```

변경 사항이 성공적으로 적용되었는지 확인하려면 변수 이름을 입력하여 현재 값을 표시합니다.

```
PS > $MaximumAliasCount
32768
```

# 의 파이프라인, 출력 및 반복 AWS Tools for PowerShell
<a name="pstools-pipelines"></a>

## 파이프라이닝
<a name="pstools-pipelining"></a>

PowerShell은 사용자가 한 cmdlet의 출력을 다음 cmdlet의 입력으로 전달하는 [파이프라인](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipelines)에 cmdlet을 연결하도록 권장합니다. 다음 예제에서는를 사용할 때이 동작을 보여줍니다 AWS Tools for PowerShell. 명령은 현재 기본 리전의 모든 Amazon EC2 인스턴스를 가져온 다음 중지합니다.

```
PS > Get-EC2Instance | Stop-EC2Instance
```

## Cmdlet 출력
<a name="pstools-output"></a>

파이프라이닝을 더 잘 지원하기 위해의 응답에서 일부 데이터가 기본적으로 삭제될 AWS SDK for .NET 수 있습니다. AWS Tools for PowerShell cmdlet의 출력은 서비스 응답 및 결과 인스턴스를 내보낸 컬렉션 객체의 `Note` 속성으로 포함하도록 재구성되지 않습니다. 대신에, 단일 모음을 출력으로 내보내는 이러한 호출의 경우, 모음이 이제 PowerShell 파이프라인에 열거됩니다. 즉, 연결할 수 있는 컬렉션 객체가 포함되어 있지 않으므로 SDK 응답 및 결과 데이터가 파이프라인에 존재할 수 없습니다.

대부분의 사용자에게는이 데이터가 필요하지 않을 수도 있지만 cmdlet에서 수행한 기본 AWS 서비스 호출로 송수신된 내용을 정확하게 확인할 수 있으므로 진단 목적으로 유용할 수 있습니다. Cmdlet은 `-Select *` 파라미터와 인수를 사용하여 전체 서비스 응답을 반환할 수 있습니다.

응답의 모든 데이터를 반환하는 방법을 설명하려면 다음 예제를 고려하세요.

첫 번째 예제에서는 Amazon S3 버킷 목록을 반환합니다. 이는 기본 설정 동작입니다.

```
PS > Get-S3Bucket

CreationDate           BucketName
------------           ----------
9/22/2023 10:54:35 PM  amzn-s3-demo-bucket1
9/22/2023 11:04:37 AM  amzn-s3-demo-bucket2
9/22/2023 12:54:34 PM  amzn-s3-demo-bucket3
```

두 번째 예제에서는 AWS SDK for .NET 응답 객체를 반환합니다. `-Select *`가 지정되었으므로 출력에는 `Buckets` 속성의 버킷 모음이 포함된 전체 API 응답이 포함됩니다. 이 예제에서는 `Format-List` cmdlet이 반드시 필요한 것은 아니지만 모든 속성이 표시되도록 하기 위해 존재합니다.

```
PS > Get-S3Bucket -Select * | Format-List

LoggedAt          : 10/1/2023 9:45:52 AM
Buckets           : {amzn-s3-demo-bucket1, amzn-s3-demo-bucket2,
                    amzn-s3-demo-bucket3}
Owner             : Amazon.S3.Model.Owner
ContinuationToken :
ResponseMetadata  : Amazon.Runtime.ResponseMetadata
ContentLength     : 0
HttpStatusCode    : OK
```

## 페이징된 데이터를 통한 반복
<a name="pstools-iteration"></a>

다음 섹션에서는 가능한 다양한 유형의 반복에 대해 설명합니다.

### 자동 반복
<a name="pstools-iteration-auto"></a>

지정된 호출에 대해 반환된 객체의 기본 최대 수를 부과하거나 페이지 지정 가능한 결과 집합을 지원하는 서비스 APIs의 경우 대부분의 cmdlet은 자동 반복을 구현하여 "page-to-completion"의 기본 동작을 활성화합니다. 이 시나리오에서는 cmdlet이 사용자를 대신하여 필요한 만큼 호출하여 전체 데이터 세트를 파이프라인에 반환합니다.

[Get-S3Object](https://docs.aws.amazon.com/powershell/v5/reference/index.html?page=Get-S3Object.html&tocid=Get-S3Object) cmdlet을 사용하는 다음 예제에서 `$result` 변수에는 버킷의 모든 키에 대한 `S3Object` 인스턴스가 포함되며`amzn-s3-demo-bucket1`, 이는 잠재적으로 매우 큰 데이터 세트입니다.

```
PS > $result = Get-S3Object -BucketName amzn-s3-demo-bucket1
```

다음 예제에서는 자동 반복 중 각 페이지의 결과 수를 기본값인 1000에서 500으로 줄입니다. 이 예제에서는 각 호출에 대해 반환되는 결과가 절반에 불과하므로 자동 반복 호출을 두 배로 수행합니다.

```
PS > $result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500
```

### 자동 반복 비활성화
<a name="pstools-iteration-disable-auto"></a>

Tools for PowerShell이 데이터의 첫 번째 페이지만 반환하도록 하려면 `-NoAutoIteration` 파라미터를 추가하여 데이터의 추가 페이지가 반환되지 않도록 할 수 있습니다.

다음 예제에서는 `-NoAutoIteration` 및 `-MaxKey` 파라미터를 사용하여 반환된 `S3Object` 인스턴스 수를 버킷에서 발견된 처음 500개 이하로 제한합니다.

```
PS > $result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration
```

사용 가능했지만 반환되지 않은 데이터가 더 있는지 확인하려면 `-Select *` 파라미터와 인수를 사용하고 다음 토큰 속성에 값이 있는지 확인합니다.

다음 예제에서는 버킷에 객체가 500개를 초과하는 `$true` 경우를 반환하고 `$false` 그렇지 않은 경우를 반환합니다.

```
PS > $result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration -Select *
PS > $null -eq $result.NextMarker
```

**참고**  
다음 토큰 응답 속성과 cmdlet 파라미터의 이름은 cmdlet마다 다릅니다. 자세한 내용은 각 cmdlet에 대한 도움말 설명서를 참조하세요.

### 수동 반복
<a name="pstools-iteration-manual"></a>

다음 예제에서는 각 반복 후 조건을 평가하는 [do](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_do) 루프를 사용하여 버킷의 모든 S3 객체를 반환합니다. `do` 루프는가 `$result.NextMarker`로 `Get-S3Object` 설정될 때까지 반복을 수행하여 더 이상 페이징된 데이터가 남아 있지 않음을 `$null`나타냅니다. 루프의 출력은 `$s3Objects` 변수에 할당됩니다.

```
$s3Objects = do
{
    $splatParams = @{
        BucketName = 'amzn-s3-demo-bucket1'
        MaxKey = 500 
        Marker = $result.NextMarker 
        NoAutoIteration = $true
        Select = '*'
    }
    $result = Get-S3Object @splatParams
    
    $result.S3Objects
}
while ($null -ne $result.NextMarker)
```

이 예제에서는 PowerShell [스플랫팅](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting)을 사용하여 파라미터와 인수를 인라인으로 선언하여 발생하는 긴 코드 줄을 방지합니다.

# 사용자 및 역할에 대한 추가 정보
<a name="pstools-users-roles"></a>

에서 Tools for PowerShell 명령을 실행하려면 작업에 적합한 사용자, 권한 세트 및 서비스 역할의 조합이 AWS있어야 합니다.

만드는 특정 사용자, 권한 집합 및 서비스 역할과 이를 사용하는 방식은 요구 사항에 따라 달라집니다. 다음은 사용 이유 및 생성 방법에 대한 몇 가지 추가 정보입니다.

## 사용자 및 권한 집합
<a name="net-dg-users-roles-user"></a>

장기 보안 인증 정보가 있는 IAM 사용자 계정을 사용하여 AWS 서비스에 액세스할 수는 있지만 이는 더 이상 모범 사례가 아니므로 피해야 합니다. 개발 중에도에서 사용자 및 권한 세트를 생성하고 자격 증명 소스에서 제공하는 임시 자격 증명을 AWS IAM Identity Center 사용하는 것이 가장 좋습니다.

개발 시에는 직접 생성했거나 [를 사용하여 인증 AWS](creds-idc.md)에서 부여받은 사용자를 사용할 수 있습니다. 적절한 AWS Management Console 권한이 있는 경우 해당 사용자에 대한 최소 권한이 있는 다른 권한 세트를 생성하거나 개발 프로젝트 전용으로 새 사용자를 생성하여 최소 권한이 있는 권한 세트를 제공할 수도 있습니다. 어떤 방법을 선택할지는 상황에 따라 달라집니다.

이러한 사용자 및 권한 세트와 생성 방법에 대한 자세한 내용은 **AWS SDK 및 도구 참조 가이드의 [인증 및 액세스](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) 및 **AWS IAM Identity Center 사용 설명서의 [시작](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)을 참조하세요.

## 서비스 역할
<a name="net-dg-users-roles-service-role"></a>

사용자를 대신하여 AWS 서비스에 액세스하도록 AWS 서비스 역할을 설정할 수 있습니다. 이러한 유형의 액세스는 여러 사람이 원격으로 애플리케이션을 실행하는 경우(예: 이러한 목적으로 생성한 Amazon EC2 인스턴스)에 적합합니다.

서비스 역할을 만드는 프로세스는 상황에 따라 다르지만 기본적으로 다음과 같습니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. **역할**을 선택한 다음 **역할 생성**을 선택합니다.

1. **AWS 서비스**를 선택하고, **EC2**(예: EC2)를 찾아 선택한 다음 **EC2** 사용 사례(예: EC2)를 선택합니다.

1. **다음을** 선택하고 애플리케이션에서 사용할 AWS 서비스에 적합한 [정책을](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 선택합니다.
**주의**  
이 정책은 계정의 거의 모든 항목에 대한 읽기 및 쓰기 권한을 허용하므로 **AdministratorAccess** 정책을 선택하지 ****않습니다**.

1. **다음**을 선택합니다. **역할 이름**, **설명** 및 원하는 태그를 입력합니다.

   [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)의 [AWS 리소스 태그를 사용하여 액세스 제어에서 태그](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)에 대한 정보를 찾을 수 있습니다.

1. **역할 생성**을 선택합니다.

[IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)의 [IAM ID(사용자, 그룹 및 역할)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_iam-roles)에서 IAM 역할에 대한 개략적인 정보를 찾을 수 있습니다. 역할에 대한 자세한 내용은 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 주제를 참조하세요.

# 레거시 보안 인증 사용
<a name="pstools-cred-legacy"></a>

이 섹션의 주제에서는 AWS IAM Identity Center를 사용하지 않고 장기 또는 단기 보안 인증 정보를 사용하는 방법에 대한 정보를 제공합니다.

**주의**  
보안 위험을 방지하려면 목적별 소프트웨어를 개발하거나 실제 데이터로 작업할 때 IAM 사용자를 인증에 사용하지 마세요. 대신 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)과 같은 보안 인증 공급자를 통한 페더레이션을 사용하십시오.

**참고**  
이러한 주제의 정보는 단기 또는 장기 보안 인증 정보를 수동으로 획득하고 관리해야 하는 상황을 위한 것입니다. 단기 및 장기 보안 인증 정보에 대한 자세한 내용은 **AWS 및 도구 참조 가이드의 [다른 인증 방법](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)을 참조하세요.  
보안 모범 사례를 보려면에 설명된 AWS IAM Identity Center대로를 사용합니다[를 사용하여 인증 AWS](creds-idc.md).

## 보안 인증에 대한 중요 경고 및 지침
<a name="pstools-creds-warnings-and-guidelines"></a>

**보안 인증에 대한 경고**
+ 계정의 루트 자격 증명을 사용하여 AWS 리소스에 액세스***하지 마십시오***. 이 보안 인증은 계정 액세스에 제한이 없고 취소하기 어렵습니다.
+ ***금지 사항.*** 명령이나 스크립트에 리터럴 액세스 키나 보안 인증 정보를 넣지 않습니다. 그렇게 하면 보안 인증 정보가 실수로 노출될 위험이 있습니다.
+ 공유 AWS `credentials` 파일에 저장된 모든 자격 증명은 일반 텍스트로 저장됩니다.

**보안 인증 정보를 안전하게 관리하기 위한 추가 지침**

자격 AWS 증명을 안전하게 관리하는 방법에 대한 일반적인 설명은의 [AWS 보안 자격 증명](https://docs.aws.amazon.com/general/latest/gr/Welcome.html#aws-security-credentials)[AWS 일반 참조](https://docs.aws.amazon.com/general/latest/gr/)과 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)의 [보안 모범 사례 및 사용 사례를](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) 참조하세요. 해당 설명과 더불어 다음 사항을 고려하세요.
+  AWS 루트 사용자 보안 인증 정보를 사용하는 대신 IAM Identity Center에 사용자 등 추가 사용자를 만들고 해당 보안 인증 정보를 사용합니다. 다른 사용자의 보안 인증 정보는 필요한 경우 또는 일시적인 경우 해지할 수 있습니다. 또한 각 사용자에게 특정 리소스 및 작업에만 액세스할 수 있도록 정책을 적용하여 최소 권한 권한을 유지할 수 있습니다.
+ Amazon EC2 Container Service(Amazon ECS) 작업에 [작업용 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)을 사용하세요.
+ Amazon EC2 인스턴스에서 실행 중인 애플리케이션에 [IAM 역할](shared-credentials-in-aws-powershell.md#shared-credentials-assume-role)을 사용하십시오.

**Topics**
+ [중요 경고 및 지침](#pstools-creds-warnings-and-guidelines)
+ [AWS 자격 증명](specifying-your-aws-credentials.md)
+ [공유 자격 증명](shared-credentials-in-aws-powershell.md)

# AWS 자격 증명 사용
<a name="specifying-your-aws-credentials"></a>

각 AWS Tools for PowerShell 명령에는 해당 웹 서비스 요청에 암호화 방식으로 서명하는 데 사용되는 AWS 자격 증명 세트가 포함되어야 합니다. 명령별로, 세션별로, 또는 모든 세션에 대해 자격 증명을 지정할 수 있습니다.

**주의**  
보안 위험을 방지하려면 목적별 소프트웨어를 개발하거나 실제 데이터로 작업할 때 IAM 사용자를 인증에 사용하지 마세요. 대신 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)과 같은 보안 인증 공급자를 통한 페더레이션을 사용하십시오.

**참고**  
이 주제의 정보는 단기 또는 장기 보안 인증 정보를 수동으로 획득하고 관리해야 하는 상황을 위한 것입니다. 단기 및 장기 보안 인증 정보에 대한 자세한 내용은 **AWS 및 도구 참조 가이드의 [다른 인증 방법](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)을 참조하세요.  
보안 모범 사례를 보려면에 설명된 AWS IAM Identity Center대로를 사용합니다[를 사용하여 인증 AWS](creds-idc.md).

자격 증명이 노출되지 않도록 하기 위해 명령에 리터럴 자격 증명을 추가하지 않는 것이 좋습니다. 대신에, 사용할 각 자격 증명 세트에 대한 프로파일을 만들고 두 자격 증명 저장소 중 하나에 프로파일을 저장합니다. 명령에서 이름을 기준으로 올바른 프로파일을 지정하면 AWS Tools for PowerShell 에서 관련 자격 증명을 검색합니다. 자격 AWS 증명을 안전하게 관리하는 방법에 대한 일반적인 설명은의 [AWS 액세스 키 관리 모범 사례를 참조하세요](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html)*Amazon Web Services 일반 참조*.

**참고**  
자격 증명을 가져오고를 사용하려면 AWS 계정이 필요합니다 AWS Tools for PowerShell. AWS 계정을 생성하려면 [시작하기: 처음 AWS 사용하시나요?를 참조하세요.](https://docs.aws.amazon.com/accounts/latest/reference/welcome-first-time-user.html) *AWS Account Management 참조 안내서*의 .

**Topics**
+ [자격 증명 저장소 위치](#specifying-your-aws-credentials-store)
+ [프로파일 관리](#managing-profiles)
+ [자격 증명 지정](#specifying-your-aws-credentials-use)
+ [자격 증명 검색 순서](#pstools-cred-provider-chain-legacy)
+ [의 자격 증명 처리 AWS Tools for PowerShell Core](#credential-handling-in-aws-tools-for-powershell-core)

## 자격 증명 저장소 위치
<a name="specifying-your-aws-credentials-store"></a>

는 다음 두 가지 자격 증명 저장소 중 하나를 사용할 AWS Tools for PowerShell 수 있습니다.
+ 자격 증명을 암호화하여 홈 폴더에 저장하는 AWS SDK 스토어입니다. Windows에서 이 저장소는 `C:\Users\username\AppData\Local\AWSToolkit\RegisteredAccounts.json` 위치에 있습니다.

  [AWS SDK for .NET](https://aws.amazon.com/sdk-for-net/) 및 [Toolkit for Visual Studio](https://aws.amazon.com/visualstudio/)에서도 AWS SDK 저장소를 사용할 수 있습니다.
+ 홈 폴더에 있지만 자격 증명 파일을 일반 텍스트로 저장하는 공유 자격 증명 파일.

  기본적으로 자격 증명 파일은 다음에 저장됩니다.
  + Windows: `C:\Users\username\.aws\credentials`
  + Mac/Linux: `~/.aws/credentials` 

   AWS SDKs 및 도 자격 증명 파일을 사용할 AWS Command Line Interface 수 있습니다. AWS 사용자 컨텍스트 외부에서 스크립트를 실행하는 경우 자격 증명이 포함된 파일을 모든 사용자 계정(로컬 시스템 및 사용자)이 자격 증명에 액세스할 수 있는 위치로 복사해야 합니다.

## 프로파일 관리
<a name="managing-profiles"></a>

프로파일을 사용하면 다양한 자격 증명 세트를 참조할 수 있습니다 AWS Tools for PowerShell. AWS Tools for PowerShell cmdlet을 사용하여 AWS SDK 스토어에서 프로필을 관리할 수 있습니다. 또한 [Toolkit for Visual Studio](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/tkv_setup.html)를 사용하거나, [AWS SDK for .NET](https://aws.amazon.com/sdk-for-net/)을(를) 사용하여 프로그래밍 방식으로 AWS SDK 저장소를 관리할 수도 있습니다. 자격 증명 파일에서 프로필을 관리하는 방법에 대한 지침은 [AWS 액세스 키 관리 모범 사례를 참조하세요](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html).

### 새 프로파일 추가
<a name="add-a-new-profile"></a>

 AWS SDK 스토어에 새 프로필을 추가하려면 명령을 실행합니다`Set-AWSCredential`. 액세스 키와 보안 키를 지정한 프로파일 이름 아래의 기본 자격 증명 파일에 저장합니다.

```
PS > Set-AWSCredential `
                 -AccessKey AKIA0123456787EXAMPLE `
                 -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY `
                 -StoreAs MyNewProfile
```
+  `-AccessKey` - 액세스 키 ID입니다.
+  `-SecretKey` - 보안 키입니다.
+  `-StoreAs` - 프로파일 이름으로, 고유해야 합니다. 기본 프로파일을 지정하려면 이름 `default`를 사용합니다.

### 프로파일 업데이트
<a name="update-a-profile"></a>

 AWS SDK 스토어는 수동으로 유지 관리해야 합니다. 나중에 서비스의 자격 증명을 변경하는 경우(예: [IAM 콘솔](https://console.aws.amazon.com/iam/home) 사용) 로컬에 저장된 자격 증명으로 명령을 실행하면 실패하고 다음 오류 메시지가 표시됩니다.

```
The Access Key Id you provided does not exist in our records.
```

프로파일에 대해 `Set-AWSCredential` 명령을 반복하고 새 액세스 및 보안 키를 전달하여 프로파일을 업데이트할 수 있습니다.

### 프로파일 나열
<a name="list-profiles"></a>

다음 명령을 사용하여 현재 이름 목록을 확인할 수 있습니다. 이 예에서 Shirley라는 사용자는 세 개의 프로파일에 액세스할 수 있으며, 이들은 모두 공유 자격 증명 파일(`~/.aws/credentials`)에 저장되어 있습니다.

```
PS > Get-AWSCredential -ListProfileDetail

ProfileName  StoreTypeName         ProfileLocation
-----------  -------------         ---------------
default      SharedCredentialsFile /Users/shirley/.aws/credentials
production   SharedCredentialsFile /Users/shirley/.aws/credentials
test         SharedCredentialsFile /Users/shirley/.aws/credentials
```

### 프로파일 제거
<a name="remove-a-profile"></a>

더 이상 필요하지 않은 프로파일을 제거하려면 다음 명령을 사용합니다.

```
PS > Remove-AWSCredentialProfile -ProfileName an-old-profile-I-do-not-need
```

`-ProfileName` 파라미터는 삭제할 프로파일을 지정합니다.

더 이상 사용되지 않는 명령 [Clear-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Clear-AWSCredential.html)은 이전 버전과의 호환성을 위해 계속 제공되지만, `Remove-AWSCredentialProfile`가 선호됩니다.

## 자격 증명 지정
<a name="specifying-your-aws-credentials-use"></a>

자격 증명을 지정하는 방법에는 몇 가지가 있습니다. 선호되는 방법은 명령줄에 리터럴 자격 증명을 통합하는 대신 프로파일을 식별하는 것입니다.는 [자격 증명 검색 순서](#pstools-cred-provider-chain-legacy)에 설명된 검색 순서를 사용하여 프로파일을 AWS Tools for PowerShell 찾습니다.

Windows에서 AWS SDK 스토어에 저장된 AWS 자격 증명은 로그인한 Windows 사용자 자격 증명으로 암호화됩니다. 이러한 암호는 다른 계정을 사용하여 해독할 수 없으며, 원래 생성된 계정과 다른 디바이스에서 사용할 수 없습니다. 예약된 작업이 실행될 사용자 계정과 같은 다른 사용자의 작업 증명이 필요한 작업을 수행하려면 해당 사용자로서 컴퓨터에 로그인할 때 사용할 수 있는 자격 증명 프로파일(이전 단원에서 설명)을 설정합니다. 작업 수행 사용자로 로그인하여 자격 증명 설정 단계를 완료하고 해당 사용자에게 적합한 프로파일을 생성합니다. 그런 다음 로그아웃을 하고 사용자 고유의 자격 증명으로 다시 로그인하여 예약된 작업을 설정합니다.

**참고**  
프로파일을 지정하려면 `-ProfileName` 명령 파라미터를 사용합니다. 이 파라미터는 이전 AWS Tools for PowerShell 릴리스의 `-StoredCredentials` 파라미터와 동일합니다. 이전 버전과의 호환성을 위해 `-StoredCredentials`도 여전히 지원됩니다.

### 기본 프로파일(권장)
<a name="default-profile-recommended"></a>

자격 증명이 라는 프로파일에 저장된 경우 모든 AWS SDKs 및 관리 도구가 로컬 컴퓨터에서 자격 증명을 자동으로 찾을 수 있습니다`default`. 예를 들어 로컬 컴퓨터에 `default`라는 이름의 프로파일이 있으면 `Initialize-AWSDefaultConfiguration` cmdlet이나 `Set-AWSCredential` cmdlet을 실행할 필요가 없습니다. 이들 도구는 해당 프로파일에 저장된 액세스 및 보안 키 데이터를 자동으로 사용합니다. 기본 리전(`Get-DefaultAWSRegion`의 결과) 이외의 AWS 리전을 사용하려면 `Set-DefaultAWSRegion`을 실행하고 리전을 지정합니다.

프로파일의 이름이 `default`가 아니지만 현재 세션의 기본 프로파일로 사용하려면 `Set-AWSCredential`을 실행하여 기본 프로파일로 설정합니다.

`Initialize-AWSDefaultConfiguration`을 실행하면 모든 PowerShell 세션의 기본 프로파일을 지정할 수 있습니다. 그러면 cmdlet은 사용자 지정 이름 프로파일에서 자격 증명을 로드하지만, `default` 프로파일을 명명된 프로파일로 덮어씁니다.

인스턴스 프로파일 없이 출시된 Amazon EC2 인스턴스의 PowerShell 세션을 실행하는 중이거나 자격 증명 프로파일을 수동으로 설정하고자 하는 경우가 아니면 `Initialize-AWSDefaultConfiguration`을 실행하지 않는 것이 좋습니다. 이 경우 자격 증명 프로파일에는 자격 증명이 포함되어 있지 않다는 점에 유의하십시오. EC2 인스턴스에서 `Initialize-AWSDefaultConfiguration`을 실행한 결과로 생성되는 자격 증명 프로파일은 자격 증명을 직접 저장하지 않고 인스턴스 메타데이터(자동으로 교체되는 임시 자격 증명을 제공)를 가리킵니다. 하지만 인스턴스의 리전은 저장합니다. 인스턴스가 실행 중인 리전 이외의 리전에 대하여 호출을 실행하고 싶으면 `Initialize-AWSDefaultConfiguration`를 실행해야 하는 또 다른 상황이 발생할 수 있습니다. 이 명령을 실행하면 인스턴스 메타데이터에 저장된 리전이 영구적으로 재정의됩니다.

```
PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2
```

**참고**  
기본 자격 증명은 AWS SDK 스토어의 `default` 프로파일 이름 아래에 포함됩니다. 이 명령은 기존 프로파일을 해당 이름으로 덮어씁니다.

EC2 인스턴스가 인스턴스 프로파일을 사용해 시작된 경우, PowerShell은 인스턴스 프로파일에서 AWS 자격 증명 및 리전 정보를 자동으로 가져옵니다. 따라서 `Initialize-AWSDefaultConfiguration`를 실행할 필요가 없습니다. 인스턴스 프로파일을 사용해 시작된 EC2 인스턴스에서 `Initialize-AWSDefaultConfiguration` cmdlet을 실행할 필요가 없습니다. PowerShell이 기본적으로 사용하고 있는 것과 동일한 인스턴스 프로파일 데이터를 사용하기 때문입니다.

### 세션 프로파일
<a name="session-profile"></a>

`Set-AWSCredential`을 사용하여 특정 세션에 대한 기본 프로파일을 지정합니다. 이 프로파일이 세션 기간 동안 기본 프로파일을 재정의합니다. 현재 `default` 프로파일을 대신하여 세션에서 사용자가 이름을 지정한 프로파일을 사용하려는 경우에 권장합니다.

```
PS > Set-AWSCredential -ProfileName MyProfileName
```

**참고**  
1.1 이전 버전의 Tools for Windows PowerShell에서는 `Set-AWSCredential` cmdlet이 올바르게 작동하지 않아서 "MyProfileName"에 의해 지정된 프로파일을 덮어씁니다. 최신 버전 Tools for Windows PowerShell을 사용하는 것이 좋습니다.

### 명령 프로파일
<a name="command-profile"></a>

개별 명령에서 `-ProfileName` 파라미터를 추가하여 해당되는 단일 명령에만 적용되는 프로파일을 지정할 수 있습니다. 이 프로파일은 다음 예제에서와 같이 기본 또는 세션 프로파일을 재정의합니다.

```
PS > Get-EC2Instance -ProfileName MyProfileName
```

**참고**  
기본 또는 세션 프로파일을 지정할 때는 `-Region` 파라미터를 추가하여 기본 또는 세션 리전을 지정할 수도 있습니다. 자세한 내용은 [의 AWS 리전 지정 AWS Tools for PowerShell](pstools-installing-specifying-region.md) 단원을 참조하십시오. 다음 예제에서는 기본 프로파일 및 리전을 지정합니다.  

```
PS > Initialize-AWSDefaultConfiguration -ProfileName MyProfileName -Region us-west-2
```

기본적으로 AWS 공유 자격 증명 파일은 사용자의 홈 폴더(`C:\Users\username\.aws`Windows 또는 Linux)`~/.aws`에 있는 것으로 간주됩니다. 다른 위치에 자격 증명 파일을 지정하려면 `-ProfileLocation` 파라미터를 포함시키고 자격 증명 파일 경로를 지정합니다. 다음 예제에서는 특정 명령에 대한 기본 이외의 자격 증명 파일을 지정합니다.

```
PS > Get-EC2Instance -ProfileName MyProfileName -ProfileLocation C:\aws_service_credentials\credentials
```

**참고**  
일반적으로 AWS에 로그인하지 않은 상태에서 PowerShell 스크립트를 실행 중인 경우(예를 들면 일반 업무 시간 이외에 예약된 작업으로서 PowerShell 스크립트를 실행 중인 경우), 사용할 프로파일을 지정할 때 `-ProfileLocation` 파라미터를 추가하고 값을 자격 증명을 저장할 파일의 경로로 설정합니다. AWS Tools for PowerShell 스크립트가 올바른 계정 자격 증명으로 실행되도록 하려면 스크립트가 AWS 계정을 사용하지 않는 컨텍스트 또는 프로세스에서 실행될 때마다 `-ProfileLocation` 파라미터를 추가해야 합니다. 또한 로컬 시스템에 액세스할 수 있는 위치 또는 스크립트가 작업을 수행하는 데 사용하는 다른 계정으로 자격 증명 파일을 복사할 수도 있습니다.

## 자격 증명 검색 순서
<a name="pstools-cred-provider-chain-legacy"></a>

명령을 실행하면가 다음 순서로 자격 증명을 AWS Tools for PowerShell 검색합니다. 사용 가능한 자격 증명을 찾으면 중지됩니다.

1. 명령줄에 파라미터로 내장된 리터럴 자격 증명입니다.

   가급적이면 명령줄에 리터럴 자격 증명을 추가하기 보다는 프로파일을 사용하는 것이 좋습니다.

1. `-Credential` 파라미터에서 지정된 자격 증명.

1. [Set-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Set-AWSCredential.html) cmdlet을 사용하여 지정한 프로필 이름 또는 프로필 위치입니다.
   + 프로필 이름만 지정하는 경우 명령은 SDK 스토어에서 AWS 지정된 프로필을 찾고, 없는 경우 기본 위치의 AWS 공유 자격 증명 파일에서 지정된 프로필을 찾습니다.
   + 프로파일 위치만 지정하는 경우, 이 명령은 해당 자격 증명 파일에서 `default` 프로파일을 찾습니다.
   + 이름과 위치를 모두 지정하는 경우, 이 명령은 해당 자격 증명 파일에서 지정된 프로파일을 찾습니다.

   지정된 프로파일이나 위치가 없으면 명령에서 예외가 발생합니다. 프로파일이나 위치를 지정하지 않은 경우에만 검색이 다음 단계로 이동합니다.

1. 세 변수 모두에 값이 있는 경우 `AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY`, 및 `AWS_SESSION_TOKEN` 환경 변수에서 생성된 자격 증명입니다.

1. `AWS_PROFILE` 환경 변수에 지정된 이름을 가진 자격 증명 프로파일입니다.

1. 기본 프로파일(다음 순서대로).

   1.  AWS SDK 스토어의 `default` 프로필입니다.

   1. 공유 AWS `credentials` 파일의 `default` 프로필입니다.

   1.  AWS SDK 스토어의 `AWS PS Default` 프로필입니다.

1. IAM 역할을 사용하도록 구성된 Amazon EC2 인스턴스에서 명령이 실행 중인 경우, 인스턴스 프로파일로부터 액세스한 EC2 인스턴스의 임시 자격 증명입니다.

   Amazon EC2 인스턴스에 IAM 역할을 사용하는 방법에 대한 자세한 내용은 [AWS SDK for .NET 개발자 안내서](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/)의 [역할로 액세스 권한 부여](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html)를 참조하세요.

이 검색을 통해 지정된 자격 증명을 찾지 못한 경우 명령에서 예외가 발생합니다.

환경 변수 및 자격 증명 프로파일에 대한 자세한 내용은 [AWS SDKs 및 도구 참조 가이드](https://docs.aws.amazon.com/sdkref/latest/guide/)의 [환경 변수](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html), [환경 변수 목록](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#EVarSettings), [공유 구성 및 자격 증명 파일](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) 주제를 참조하세요.

## 의 자격 증명 처리 AWS Tools for PowerShell Core
<a name="credential-handling-in-aws-tools-for-powershell-core"></a>

의 Cmdlet은와 유사하게 실행될 때 AWS 액세스 및 보안 키 또는 자격 증명 프로필 이름을 AWS Tools for PowerShell Core 수락합니다 AWS Tools for Windows PowerShell. Windows에서 실행될 때 두 모듈 모두 AWS SDK for .NET 자격 증명 저장소 파일(사용자별 `AppData\Local\AWSToolkit\RegisteredAccounts.json` 파일에 저장)에 액세스할 수 있습니다.

이 파일은 키를 암호화된 형식으로 저장하므로 다른 컴퓨터에서는 사용할 수 없습니다. 가 자격 증명 프로필을 AWS Tools for PowerShell 검색하는 첫 번째 파일이며가 자격 증명 프로필을 AWS Tools for PowerShell 저장하는 파일이기도 합니다. 자격 AWS SDK for .NET 증명 스토어 파일에 대한 자세한 내용은 [AWS 자격 증명 구성을 참조하세요](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-config-creds.html). 현재 Tools for Windows PowerShell 모듈에서는 다른 파일이나 위치에 자격 증명 쓰기를 지원하지 않습니다.

두 모듈 모두 다른 AWS SDKs 및에서 사용하는 AWS 공유 자격 증명 파일에서 프로필을 읽을 수 있습니다 AWS CLI. Windows에서 이 파일의 기본 위치는 `C:\Users\<userid>\.aws\credentials`입니다. Windows 이외의 플랫폼에서는 이 파일이 `~/.aws/credentials`에 저장됩니다. `-ProfileLocation` 파라미터를 사용하여 기본값이 아닌 파일 이름이나 파일 위치를 가리킬 수 있습니다.

SDK 자격 증명 저장소는 Windows 암호화 API를 사용하여 자격 증명을 암호화된 형태로 보관합니다. 이러한 APIs는 다른 플랫폼에서 사용할 수 없으므로 AWS Tools for PowerShell Core 모듈은 AWS 공유 자격 증명 파일만 사용하고 공유 자격 증명 파일에 새 자격 증명 프로파일 쓰기를 지원합니다.

`Set-AWSCredential` cmdlet을 사용하는 다음 예제에서는 **AWSPowerShell** 또는 **AWSPowerShell.NetCore** 모듈을 사용하여 Windows에서 자격 증명 프로파일을 처리하는 옵션을 보여 줍니다.

```
# Writes a new (or updates existing) profile with name "myProfileName"
# in the encrypted SDK store file

Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName

# Checks the encrypted SDK credential store for the profile and then
# falls back to the shared credentials file in the default location

Set-AWSCredential -ProfileName myProfileName

# Bypasses the encrypted SDK credential store and attempts to load the
# profile from the ini-format credentials file "mycredentials" in the
# folder C:\MyCustomPath

Set-AWSCredential -ProfileName myProfileName -ProfileLocation C:\MyCustomPath\mycredentials
```

다음 예제에서는 Linux 또는 macOS 운영 체제에서 **AWSPowerShell.NetCore** 모듈의 작동을 보여 줍니다.

```
# Writes a new (or updates existing) profile with name "myProfileName"
# in the default shared credentials file ~/.aws/credentials

Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName

# Writes a new (or updates existing) profile with name "myProfileName"
# into an ini-format credentials file "~/mycustompath/mycredentials"

Set-AWSCredential -AccessKey akey -SecretKey skey -StoreAs myProfileName -ProfileLocation ~/mycustompath/mycredentials

# Reads the default shared credential file looking for the profile "myProfileName"

Set-AWSCredential -ProfileName myProfileName

# Reads the specified credential file looking for the profile "myProfileName"

Set-AWSCredential -ProfileName myProfileName -ProfileLocation ~/mycustompath/mycredentials
```

# 의 공유 자격 증명 AWS Tools for PowerShell
<a name="shared-credentials-in-aws-powershell"></a>

Tools for Windows PowerShell은 AWS CLI 및 기타 AWS SDKs와 마찬가지로 AWS 공유 자격 증명 파일 사용을 지원합니다. Tools for Windows PowerShell은 이제 .NET `assume role` 자격 증명 파일과 AWS 공유 자격 증명 파일 모두에 `basic`대한 `session`, 및 자격 증명 프로파일 읽기 및 쓰기를 지원합니다. 이 기능은 새 `Amazon.Runtime.CredentialManagement` 네임스페이스를 통해 활성화됩니다.

**주의**  
보안 위험을 방지하려면 목적별 소프트웨어를 개발하거나 실제 데이터로 작업할 때 IAM 사용자를 인증에 사용하지 마세요. 대신 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)과 같은 보안 인증 공급자를 통한 페더레이션을 사용하십시오.

**참고**  
이 주제의 정보는 단기 또는 장기 보안 인증 정보를 수동으로 획득하고 관리해야 하는 상황을 위한 것입니다. 단기 및 장기 보안 인증 정보에 대한 자세한 내용은 **AWS 및 도구 참조 가이드의 [다른 인증 방법](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)을 참조하세요.  
보안 모범 사례를 보려면에 설명된 AWS IAM Identity Center대로를 사용합니다[를 사용하여 인증 AWS](creds-idc.md).

새 프로필 유형 및 AWS 공유 자격 증명 파일에 대한 액세스는 자격 증명 관련 cmdlet, [Initialize-AWSDefaultConfiguration](https://docs.aws.amazon.com/powershell/v5/reference/items/Initialize-AWSDefaultConfiguration.html), [New-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/New-AWSCredential.html) 및 [Set-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Set-AWSCredential.html)에 추가된 다음 파라미터에서 지원됩니다. 서비스 cmdlet에서는 공통 파라미터인 `-ProfileName`을 추가하여 새 프로파일을 참조할 수 있습니다.

## 에서 IAM 역할 사용 AWS Tools for PowerShell
<a name="shared-credentials-assume-role"></a>

 AWS 공유 자격 증명 파일을 사용하면 추가 유형의 액세스가 가능합니다. 예를 들어 IAM 사용자의 장기 자격 증명 대신 IAM 역할을 사용하여 AWS 리소스에 액세스할 수 있습니다. 이렇게 하려면 역할을 수임할 권한이 있는 표준 프로파일을 가져야 합니다. 역할을 지정한 프로파일을 사용하도록 AWS Tools for PowerShell 에 지시하면는 `SourceProfile` 파라미터로 식별되는 프로파일을 AWS Tools for PowerShell 조회합니다. 이러한 자격 증명은 `RoleArn` 파라미터에 지정된 역할에 대한 임시 자격 증명을 요청하는 데 사용됩니다. 제3자가 역할을 수임할 때 선택적으로 멀티 팩터 인증(MFA) 디바이스 또는 `ExternalId` 코드를 사용하도록 요구할 수 있습니다.


****  

| 파라미터 이름 | 설명 | 
| --- | --- | 
|  ExternalId  |  역할에 필요할 경우 역할 수임 시 사용될 사용자 정의 외부 ID입니다. 이는 일반적으로 계정에 대한 액세스 권한을 제3자에게 위임할 때만 필요합니다. 제3자는 할당된 역할을 위임할 때 외부 ID를 파라미터로 포함해야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 리소스에 대한 액세스 권한을 타사에 부여할 때 외부 ID를 사용하는 방법을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html).  | 
|  MfaSerial  |  역할에 필요할 경우 역할 수임 시 사용될 MFA 일련 번호입니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS에서 멀티 팩터 인증(MFA) 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)을 참조하세요.  | 
|  RoleArn  |  역할 자격 증명 수임을 위해 수임할 역할의 ARN입니다. IAM 역할 생성 및 사용에 대한 자세한 내용은 *IAM 사용 설명서*에서 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 참조하세요.  | 
|  SourceProfile  |  역할 자격 증명 수임에 사용될 소스 프로파일의 이름입니다. 이 프로파일에서 확인된 자격 증명은 `RoleArn` 파라미터가 지정한 역할을 수임하는 데 사용됩니다.  | 

### 역할 수임을 위한 프로파일 설정
<a name="setup"></a>

다음은 IAM 역할을 직접 수임할 수 있도록 원본 프로파일을 설정하는 방법을 보여주는 예입니다.

첫 번째 명령은 역할 프로파일에서 참조하는 원본 프로파일을 생성합니다.. 두 번째 명령은 어떤 역할을 수임할 것인지에 대한 역할 프로파일을 생성합니다. 세 번째 명령은 역할 프로파일에 대한 자격 증명을 표시합니다.

```
PS > Set-AWSCredential -StoreAs my_source_profile -AccessKey access_key_id -SecretKey secret_key
PS > Set-AWSCredential -StoreAs my_role_profile -SourceProfile my_source_profile -RoleArn arn:aws:iam::123456789012:role/role-i-want-to-assume
PS > Get-AWSCredential -ProfileName my_role_profile

SourceCredentials                  RoleArn                                              RoleSessionName                           Options
-----------------                  -------                                              ---------------                           -------
Amazon.Runtime.BasicAWSCredentials arn:aws:iam::123456789012:role/role-i-want-to-assume aws-dotnet-sdk-session-636238288466144357 Amazon.Runtime.AssumeRoleAWSCredentialsOptions
```

Tools for Windows PowerShell 서비스 cmdlet과 함께 이 역할 프로파일을 사용하려면 `-ProfileName` 공통 파라미터를 명령에 추가하여 역할 프로파일을 참조합니다. 다음 예제에서는 이전 예제에서 정의한 역할 프로파일을 사용하여 [Get-S3Bucket](https://docs.aws.amazon.com/powershell/v5/reference/items/Get-S3Bucket.html) cmdlet에 액세스 AWS Tools for PowerShell 합니다.는에서 자격 증명을 조회하고`my_source_profile`, 이러한 자격 증명을 사용하여 사용자를 `AssumeRole` 대신하여를 호출한 다음, 이러한 임시 역할 자격 증명을 사용하여를 호출합니다`Get-S3Bucket`.

```
PS > Get-S3Bucket -ProfileName my_role_profile

CreationDate           BucketName
------------           ----------
2/27/2017 8:57:53 AM   4ba3578c-f88f-4d8b-b95f-92a8858dac58-bucket1
2/27/2017 10:44:37 AM  2091a504-66a9-4d69-8981-aaef812a02c3-bucket2
```

## 자격 증명 프로파일 유형 사용
<a name="using-the-credential-profile-types"></a>

자격 증명 프로파일 유형을 설정하려면 프로파일 유형에 필요한 정보를 제공하는 파라미터를 알아야 합니다.


****  

| 자격 증명 유형 | 사용해야 하는 파라미터 | 
| --- | --- | 
|  **기본** 이들은 IAM 사용자에 대한 장기 자격 증명입니다.  |  `-AccessKey`  `-SecretKey`  | 
|  **세션**: 이들은 [Use-STSRole](https://docs.aws.amazon.com/powershell/v5/reference/items/Use-STSRole.html) cmdlet의 직접 호출 등을 통해 수동으로 검색하는 IAM 역할에 대한 단기 자격 증명입니다..  |  `-AccessKey`  `-SecretKey` `-SessionToken`  | 
|  **역할**: 이들은 사용자를 위해 AWS Tools for PowerShell 이 검색하는 IAM 역할에 대한 단기 자격 증명입니다.  |  `-SourceProfile` `-RoleArn`  선택 사항: `-ExternalId` 선택 사항: `-MfaSerial`  | 

## `ProfileLocation` 공통 파라미터
<a name="the-profileslocation-common-parameter"></a>

`-ProfileLocation`을 사용하여 공유 자격 증명 파일에 쓰고 cmdlet에 자격 파일에서 읽도록 지정할 수 있습니다. `-ProfileLocation` 파라미터를 추가하여 Tools for Windows PowerShell에서 공유 자격 증명 파일을 사용할지 또는 .NET 자격 증명 파일을 사용할지 여부를 제어할 수 있습니다. 다음 표에서는 Tools for Windows PowerShell에서 이 파라미터가 작동하는 방식을 설명합니다.


****  

| 프로파일 위치 값 | 프로파일 해결 동작 | 
| --- | --- | 
|  null 값(설정되지 않음) 또는 비어 있음  |  먼저 지정된 이름이 있는 프로파일에 대한 .NET 자격 증명 파일을 검색함. 프로필을 찾을 수 없는 경우에서 AWS 공유 자격 증명 파일을 검색합니다`(user's home directory)\.aws\credentials`.  | 
|   AWS 공유 자격 증명 파일 형식의 파일 경로  |  특정 이름이 있는 프로파일에 대해 지정된 파일만 검색함.  | 

### 자격 증명을 자격 증명 파일에 저장
<a name="save-credentials-to-a-credentials-file"></a>

자격 증명을 써서 두 자격 증명 파일 중 하나에 저장하려면 `Set-AWSCredential` cmdlet을 실행합니다. 다음 예에서는 이 작업을 수행하는 방법을 보여줍니다. 첫 번째 명령은 `Set-AWSCredential`에서 `-ProfileLocation`을(를) 사용하여 `-ProfileName` 파라미터에 의해 지정된 프로파일에 액세스 키와 보안 키를 추가합니다. 두 번째 행에서는 [Get-Content](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content) cmdlet을 실행하여 자격 증명 파일의 내용을 표시합니다.

```
PS > Set-AWSCredential -ProfileLocation C:\Users\auser\.aws\credentials -ProfileName basic_profile -AccessKey access_key2 -SecretKey secret_key2
PS > Get-Content C:\Users\auser\.aws\credentials

aws_access_key_id=access_key2
aws_secret_access_key=secret_key2
```

## 자격 증명 프로파일 표시
<a name="showing-credential-profiles"></a>

[Get-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Get-AWSCredential.html) cmdlet을 실행하고 `-ListProfileDetail` 파라미터를 추가하여 자격 증명 파일 유형 및 위치와 프로파일 이름 목록을 반환합니다.

```
PS > Get-AWSCredential -ListProfileDetail

ProfileName                     StoreTypeName         ProfileLocation
-----------                     -------------         ---------------
source_profile                  NetSDKCredentialsFile
assume_role_profile             NetSDKCredentialsFile
basic_profile                   SharedCredentialsFile C:\Users\auser\.aws\credentials
```

## 자격 증명 프로파일 제거
<a name="removing-credential-profiles"></a>

자격 증명 프로파일을 제거하려면 새 [Remove-AWSCredentialProfile](https://docs.aws.amazon.com/powershell/v5/reference/items/Remove-AWSCredentialProfile.html) cmdlet을 실행합니다. [Clear-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Clear-AWSCredential.html)은 더 이상 사용되지 않지만 이전 버전과의 호환성을 위해 여전히 제공되고 있습니다.

## 중요 정보
<a name="important-notes"></a>

[Initialize-AWSDefaultConfiguration](https://docs.aws.amazon.com/powershell/v5/reference/items/Initialize-AWSDefaultConfiguration.html), [New-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/New-AWSCredential.html) 및 [Set-AWSCredential](https://docs.aws.amazon.com/powershell/v5/reference/items/Set-AWSCredential.html)만 역할 프로파일에 대한 파라미터를 지원합니다. `Get-S3Bucket -SourceProfile source_profile_name -RoleArn arn:aws:iam::999999999999:role/role_name`와 같은 명령에서 역할 파라미터를 직접 지정할 수 없습니다. 서비스 cmdlet은 `SourceProfile` 또는 `RoleArn` 파라미터를 직접 지원하지 않으므로 이 기능은 작동하지 않습니다. 대신 이러한 파라미터를 프로파일에 저장한 다음 `-ProfileName` 파라미터를 사용하여 명령을 호출해야 합니다.