환경 변수 관리 - AWS App Runner

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

환경 변수 관리

다음 방법 중 하나를 사용하여 App Runner 서비스의 환경 변수를 관리합니다.

앱 러너 콘솔

App Runner 콘솔에서 서비스를 만들거나 서비스를 업데이트할 때 환경 변수를 추가할 수 있습니다.

환경 변수 추가

환경 변수를 추가하려면
  1. App Runner 콘솔을 열고 지역 목록에서 해당 콘솔을 선택합니다. AWS 리전

  2. 서비스를 생성 중인지 업데이트 중인지에 따라 다음 단계 중 하나를 수행하십시오.

    • 새 서비스를 생성하는 경우 App Runner 서비스 생성을 선택하고 서비스 구성으로 이동합니다.

    • 기존 서비스를 업데이트하는 경우 업데이트하려는 서비스를 선택하고 서비스의 구성 탭으로 이동합니다.

  3. 서비스 설정에서 환경 변수 - 선택 사항으로 이동합니다.

  4. 요구 사항에 따라 다음 옵션 중 하나를 선택하십시오.

    • 환경 변수 소스에서 일반 텍스트를 선택하고 환경 변수 이름 및 환경 변수 값에 각각 해당 키-값 쌍을 입력합니다.

      참고

      중요하지 않은 데이터를 참조하려면 일반 텍스트를 선택합니다. 이 데이터는 암호화되지 않으며 App Runner 서비스 구성 및 애플리케이션 로그에서 다른 사용자가 볼 수 있습니다.

    • 서비스에 환경 변수로 저장된 시크릿을 참조하려면 환경 변수 소스에서 Secrets Manager를 선택합니다. AWS Secrets Manager 환경 변수 이름 및 환경 변수 값에서 참조하는 암호의 환경 변수 이름과 Amazon 리소스 이름 (ARN) 을 각각 입력합니다.

    • SSM 파라미터 스토어에 저장된 파라미터를 서비스의 환경 변수로 참조하려면 환경 변수 소스에서 SSM 파라미터 스토어를 선택합니다. 환경 변수 이름 및 환경 변수 값에서 참조하는 매개변수의 환경 변수 이름과 ARN을 각각 입력합니다.

      참고
      • App Runner 서비스를 만들거나 업데이트할 때는 환경 변수 PORT 이름으로 할당할 수 없습니다. App Runner 서비스용으로 예약된 환경 변수입니다.

      • SSM 파라미터 스토어 파라미터가 시작하려는 서비스와 AWS 리전 동일한 경우, 전체 Amazon 리소스 이름 (ARN) 또는 파라미터 이름을 지정할 수 있습니다. 파라미터가 다른 지역에 있는 경우 전체 ARN을 지정해야 합니다.

      • 참조하는 파라미터가 시작 또는 업데이트 중인 서비스와 동일한 계정에 있는지 확인하세요. 현재는 계정 간에 SSM 파라미터 스토어 파라미터를 참조할 수 없습니다.

  5. 다른 환경 변수를 참조하려면 환경 변수 추가를 선택합니다.

  6. IAM 정책 템플릿을 확장하여 AWS Secrets Manager 및 SSM 파라미터 스토어에 제공된 IAM 정책 템플릿을 보고 복사할 수 있습니다. 인스턴스 역할의 IAM 정책을 필요한 권한으로 아직 업데이트하지 않은 경우에만 이 작업을 수행하면 됩니다. 자세한 내용은 Permissions 단원을 참조하십시오.

환경 변수 제거

환경 변수를 삭제하기 전에 애플리케이션 코드가 동일한 내용을 반영하도록 업데이트되었는지 확인하십시오. 애플리케이션 코드가 업데이트되지 않으면 App Runner 서비스가 실패할 수 있습니다.

환경 변수를 제거하려면
  1. App Runner 콘솔을 열고 지역 목록에서 해당 콘솔을 선택합니다. AWS 리전

  2. 업데이트하려는 서비스의 구성 탭으로 이동합니다.

  3. 서비스 설정에서 환경 변수 - 선택사항으로 이동합니다.

  4. 제거하려는 환경 변수 옆의 제거를 선택합니다. 삭제를 확인하는 메시지가 나타납니다.

  5. 삭제를 선택합니다.

앱 러너 API 또는 AWS CLI

Secrets Manager 및 SSM 파라미터 스토어에 저장된 민감한 데이터를 서비스의 환경 변수로 추가하여 참조할 수 있습니다.

참고

앱 러너가 Secrets Manager 및 SSM 파라미터 스토어에 저장된 비밀과 파라미터에 액세스할 수 있도록 인스턴스 역할의 IAM 정책을 업데이트하세요. 자세한 내용은 Permissions 단원을 참조하십시오.

시크릿 및 구성을 환경 변수로 참조하려면
  1. Secrets Manager 또는 SSM 파라미터 저장소에서 시크릿 또는 컨피그레이션을 생성합니다.

    다음 예제는 SSM 파라미터 저장소를 사용하여 시크릿과 파라미터를 생성하는 방법을 보여줍니다.

    예 시크릿 생성 - 요청

    다음 예제는 데이터베이스 자격 증명을 나타내는 시크릿을 생성하는 방법을 보여줍니다.

    aws secretsmanager create-secret \ —name DevRdsCredentials \ —description "Rds credentials for development account." \ —secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
    예 시크릿 생성 - 응답
    arn:aws:secretsmanager:<region>:<aws_account_id>:secret:DevRdsCredentials
    예 구성 생성 - 요청

    다음 예제는 RDS 연결 문자열을 나타내는 파라미터를 만드는 방법을 보여줍니다.

    aws systemsmanager put-parameter \ —name DevRdsConnectionString \ —value "mysql2://dev-mysqlcluster-rds.com:3306/diegor" \ —type "String" \ —description "Rds connection string for development account."
    예 구성 생성 - 응답
    arn:aws:ssm:<region>:<aws_account_id>:parameter/DevRdsConnectionString
  2. Secrets Manager 및 SSM 파라미터 스토어에 저장된 시크릿과 컨피그레이션을 환경 변수로 추가하여 참조할 수 있습니다. App Runner 서비스를 생성하거나 업데이트할 때 환경 변수를 추가할 수 있습니다.

    다음 예시는 코드 기반 및 이미지 기반 App Runner 서비스에서 암호와 구성을 환경 변수로 참조하는 방법을 보여줍니다.

    예 이미지 기반 앱 러너 서비스를 위한 입력.json 파일
    { "ServiceName": "example-secrets", "SourceConfiguration": { "ImageRepository": { "ImageIdentifier": "<image-identifier>", "ImageConfiguration": { "Port": "<port>", "RuntimeEnvironmentSecrets": { "Credential1":"arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXXXXXX", "Credential2":"arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" } }, "ImageRepositoryType": "ECR_PUBLIC" } }, "InstanceConfiguration": { "Cpu": "1 vCPU", "Memory": "3 GB", "InstanceRoleArn": "<instance-role-arn>" } }
    예 이미지 기반 앱 러너 서비스 — 요청
    aws apprunner create-service \ --cli-input-json file://input.json
    예 이미지 기반 앱 러너 서비스 — 응답
    { ... "ImageRepository": { "ImageIdentifier":"<image-identifier>", "ImageConfiguration":{ "Port": "<port>", "RuntimeEnvironmentSecrets":{ "Credential1": "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXXXXXX", "Credential2": "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" }, "ImageRepositoryType":"ECR" } }, "InstanceConfiguration": { "CPU": "1 vCPU", "Memory": "3 GB", "InstanceRoleArn: "<instance-role-arn>" } ... }
    예 코드 기반 앱 러너 서비스를 위한.json 파일 입력
    { "ServiceName": "example-secrets", "SourceConfiguration": { "AuthenticationConfiguration": { "ConnectionArn": "arn:aws:apprunner:us-east-1:123456789012:connection/my-github-connection/XXXXXXXXXX" }, "AutoDeploymentsEnabled": false, "CodeRepository": { "RepositoryUrl": "<repository-url>", "SourceCodeVersion": { "Type": "BRANCH", "Value": "main" }, "CodeConfiguration": { "ConfigurationSource": "API", "CodeConfigurationValues": { "Runtime": "<runtime>", "BuildCommand": "<build-command>", "StartCommand": "<start-command>", "Port": "<port>", "RuntimeEnvironmentSecrets": { "Credential1":"arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXXXXXX", "Credential2":"arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" } } } } }, "InstanceConfiguration": { "Cpu": "1 vCPU", "Memory": "3 GB", "InstanceRoleArn": "<instance-role-arn>" } }
    예 코드 기반 앱 러너 서비스 — 요청
    aws apprunner create-service \ --cli-input-json file://input.json
    예 코드 기반 앱 러너 서비스 — 응답
    { ... "SourceConfiguration":{ "CodeRepository":{ "RepositoryUrl":"<repository-url>", "SourceCodeVersion":{ "Type":"Branch", "Value":"main" }, "CodeConfiguration":{ "ConfigurationSource":"API", "CodeConfigurationValues":{ "Runtime":"<runtime>", "BuildCommand":"<build-command>", "StartCommand":"<start-command>", "Port":"<port>", "RuntimeEnvironmentSecrets":{ "Credential1" : "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXX", "Credential2" : "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" } } } }, "InstanceConfiguration": { "CPU": "1 vCPU", "Memory": "3 GB", "InstanceRoleArn: "<instance-role-arn>" } ... }
  3. 추가된 apprunner.yaml 비밀이 반영되도록 모델이 업데이트되었습니다.

    다음은 업데이트된 apprunner.yaml 모델의 예시입니다.

    apprunner.yaml
    version: 1.0 runtime: python3 build: commands: build: - python -m pip install flask run: command: python app.py network: port: 8080 env: - name: MY_VAR_EXAMPLE value: "example" secrets: - name: my-secret value-from: "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXXXXXX" - name: my-parameter value-from: "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" - name: my-parameter-only-name value-from: "parameter-name"