Ref - AWS CloudFormation

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

Ref

Ref 내장 함수는 지정된 파라미터 또는 리소스에 대한 정보를 반환합니다. AWS::LanguageExtensions 변환변환을 사용할 때 내장 함수를 및 의 매개변수로 사용할 수 있습니다. Ref Fn::GetAtt

  • 파라미터의 논리적 이름을 지정하면 파라미터의 값이 반환됩니다.

  • 리소스의 논리적 이름을 지정하면 해당 리소스를 참조하는 데 일반적으로 사용할 수 있는 값이 반환됩니다(예: 물리적 ID).

  • 내장 함수를 지정하면 해당 함수의 출력값이 반환됩니다.

템플릿에서 리소스를 선언하는 데 이름으로 또 다른 템플릿 리소스를 지정해야 하는 경우 Ref를 사용하여 해당하는 다른 리소스를 참조할 수 있습니다. 일반적으로, Ref는 리소스의 이름을 반환합니다. 예를 들어 AWS::AutoScaling::AutoScaling그룹에 대한 참조는 해당 Auto Scaling 그룹 리소스의 이름을 반환합니다.

일부 리소스의 경우 리소스 측면에서 또 다른 중요한 의미를 지닌 식별자가 반환됩니다. 예를 들어 AWS: :EC2: :EIP 리소스는 IP 주소를 반환하고 는 인스턴스 ID를 AWS::EC2::Instance반환합니다.

작은 정보

를 사용하여 출력 메시지에 값을 Ref 추가할 수도 있습니다.

특정 리소스 또는 속성의 Ref 반환 값에 대한 자세한 내용은 리소스 및 속성 참조의 해당 리소스 또는 속성에 대한 설명서를 참조하십시오.

선언

JSON

{ "Ref" : "logicalName" }
{ "Ref" : "IntrinsicFunction" }

YAML

전체 함수 이름의 구문:

Ref: logicalName
Ref: IntrinsicFunction

짧은 형식의 구문:

!Ref logicalName
!Ref IntrinsicFunction

파라미터

logicalName

참조하려는 리소스 또는 파라미터의 논리명입니다.

IntrinsicFunction

유효한 문자열로 해석되는 내장 함수입니다. 여기에는 파라미터 또는 식별자에 대한 참조가 포함되어야 하며 리소스 논리적 식별자는 포함하지 않아야 합니다.

반환 값

파라미터가 LogicalName인 경우, 반환 값은 리소스의 물리적 ID 또는 파라미터의 값입니다.

매개 변수가 IntrinsicFunctiona인 경우 반환 값은 내장 함수의 반환 값입니다.

예시

엘라스틱 IP 주소에 대한 다음 리소스 선언에는 EC2 인스턴스의 인스턴스 ID가 필요하며 Ref 함수를 사용하여 MyEC2Instance 리소스의 인스턴스 ID를 지정합니다.

JSON

"MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : { "Ref" : "MyEC2Instance" } } }

YAML

MyEIP: Type: "AWS::EC2::EIP" Properties: InstanceId: !Ref MyEC2Instance

여러 단계에 대한 식별자 생성 예제

이 예제에서는 Fn::Sub 내장 함수를 사용하여 여러 단계의 식별자 값을 대체하는 방법을 보여줍니다. 그런 다음 RefFn::GetAtt 함수를 사용하여 스테이지에 대한 입력에 따라 적절한 값을 참조할 수 있습니다. Fn::SubAmazon 경보의 크기를 설정하는 Fn::GetAtt 데 적합한 Amazon SQS 대기열의 ARN을 가져오는 데 먼저 사용됩니다. CloudWatch 다음으로 Fn::JoinRef 를 사용하여 Stage 파라미터의 논리적 ID 문자열을 생성합니다.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::LanguageExtensions", "Parameters": { "Stage": { "Type": "String", "Default": "Dev", "AllowedValues": [ "Dev", "Prod" ] } }, "Conditions": { "isProd": { "Fn::Equals": [ {"Ref": "Stage"}, "Prod" ] }, "isDev": { "Fn::Equals": [ {"Ref": "Stage"}, "Dev" ] } }, "Resources": { "DevQueue": { "Type": "AWS::SQS::Queue", "Condition": "isDev", "Properties": { "QueueName": {"Fn::Sub": "My${Stage}Queue"} } }, "ProdQueue": { "Type": "AWS::SQS::Queue", "Condition": "isProd", "Properties": { "QueueName": {"Fn::Sub": "My${Stage}Queue"} } }, "DevTopic": { "Condition": "isDev", "Type": "AWS::SNS::Topic" }, "ProdTopic": { "Condition": "isProd", "Type": "AWS::SNS::Topic" }, "MyAlarm": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "AlarmDescription": "Alarm if queue depth grows beyond 10 messages", "Namespace": "AWS/SQS", "MetricName": "ApproximateNumberOfMessagesVisible", "Dimensions":[ { "Name": {"Fn::Sub": "${Stage}Queue"}, "Value": {"Fn::GetAtt": [{"Fn::Sub": "${Stage}Queue"}, "QueueName"]} } ], "Statistic": "Sum", "Period": 300, "EvaluationPeriods": 1, "Threshold": 10, "ComparisonOperator": "GreaterThanThreshold", "AlarmActions": [ { "Ref": {"Fn::Join": ["", [{"Ref": "Stage"}, "Topic"]]} } ] } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Transform: 'AWS::LanguageExtensions' Parameters: Stage: Type: String Default: Dev AllowedValues: - Dev - Prod Conditions: isProd: !Equals - !Ref Stage - Prod isDev: !Equals - !Ref Stage - Dev Resources: DevQueue: Type: 'AWS::SQS::Queue' Condition: isDev Properties: QueueName: !Sub 'My${Stage}Queue' ProdQueue: Type: 'AWS::SQS::Queue' Condition: isProd Properties: QueueName: !Sub 'My${Stage}Queue' DevTopic: Condition: isDev Type: 'AWS::SNS::Topic' ProdTopic: Condition: isProd Type: 'AWS::SNS::Topic' MyAlarm: Type: 'AWS::CloudWatch::Alarm' Properties: AlarmDescription: Alarm if queue depth grows beyond 10 messages Namespace: AWS/SQS MetricName: ApproximateNumberOfMessagesVisible Dimensions: - Name: !Sub '${Stage}Queue' Value: !GetAtt - !Sub '${Stage}Queue' - QueueName Statistic: Sum Period: 300 EvaluationPeriods: 1 Threshold: 10 ComparisonOperator: GreaterThanThreshold AlarmActions: - !Ref 'Fn::Join': - '' - - !Ref Stage - Topic

지원되는 함수

AWS::LanguageExtensions 변환트랜스폼을 사용하면 Ref 함수 내에서 다음 함수를 사용할 수 있습니다.