由于遇到200资源错误的问题,因此我找到了一种通过将交叉堆栈引用划分为不同的服务来使用交叉引用的方法。我设法通过使用跨堆栈引用来做到这一点。问题是我无法动态给restApiId和restApiRootResourceId。现在,我将id静态地设置到service-2中。
基本上service-1看起来像
provider:
name: aws
runtime: nodejs8.10
apiGateway:
restApiId:
Ref: ApiGatewayRestApi
restApiResources:
Fn::GetAtt:
- ApiGatewayRestApi
- RootResourceId
custom:
stage: "${opt:stage, self:provider.stage}"
resources:
Resources:
ApiGatewayRestApi:
Type: AWS::ApiGateway::RestApi
Properties:
Name: ${self:service}-${self:custom.stage}-1
Outputs:
ApiGatewayRestApiId:
Value:
Ref: ApiGatewayRestApi
Export:
Name: ApiGatewayRestApi-restApiId
ApiGatewayRestApiRootResourceId:
Value:
Fn::GetAtt:
- ApiGatewayRestApi
- RootResourceId
Export:
Name: ApiGatewayRestApi-rootResourceId
service-2如下所示,
provider:
name: aws
runtime: nodejs8.10
apiGateway-shared:
restApiId:
'Fn::ImportValue': ApiGatewayRestApi-restApiId
restApiRootResourceId:
'Fn::ImportValue': ApiGatewayRestApi-rootResourceId
作为上述service-2配置,我无法引用ID。 仅供参考:两种服务都在不同的文件中。 那么这种方法怎么了?
答案 0 :(得分:0)
无服务器有special syntax关于如何访问堆栈输出变量:void PlayClicked(object sender, System.EventArgs e)
{
CrossMediaManager.Current.PlaybackController.Play();
}
。
请注意,在{cf:stackName.outputKey}
部分中可以使用Fn::ImportValue
。