기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 또는 파라미터의 값입니다.
매개 변수가 IntrinsicFunction
a인 경우 반환 값은 내장 함수의 반환 값입니다.
예시
예
엘라스틱 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
내장 함수를 사용하여 여러 단계의 식별자 값을 대체하는 방법을 보여줍니다. 그런 다음 Ref
및 Fn::GetAtt
함수를 사용하여 스테이지에 대한 입력에 따라 적절한 값을 참조할 수 있습니다. Fn::Sub
Amazon 경보의 크기를 설정하는 Fn::GetAtt
데 적합한 Amazon SQS 대기열의 ARN을 가져오는 데 먼저 사용됩니다. CloudWatch 다음으로 Fn::Join 와 Ref
를 사용하여 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
함수 내에서 다음 함수를 사용할 수 있습니다.