首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CDK为CfnCrawler生成空目标

CDK为CfnCrawler生成空目标
EN

Stack Overflow用户
提问于 2019-06-03 21:49:03
回答 2查看 2.7K关注 0票数 3

我使用来定义Glue爬虫,但是,CDK生成的模板在crawler资源中包含空的‘Target’块。

我还没有找到一个可以效仿的例子。我尝试更改了对目标对象的定义,但CDK似乎忽略了对象定义。

代码语言:javascript
运行
复制
from aws_cdk import cdk

BUCKET='poc-1-bucket43879c71-5uabw2rni0cp'

class PocStack(cdk.Stack):

    def __init__(self, app: cdk.App, id: str, **kwargs) -> None:
        super().__init__(app, id)

        from aws_cdk import (
            aws_iam as iam,
            aws_glue as glue,
            cdk
        )

        glue_role = iam.Role(
            self, 'glue_role',
            assumed_by=iam.ServicePrincipal('glue.amazonaws.com'),
            managed_policy_arns=['arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole']
        )

        glue_crawler = glue.CfnCrawler(
            self, 'glue_crawler',
            database_name='db',
            role=glue_role.role_arn,
            targets={"S3Targets": [{"Path": f'{BUCKET}/path/'}]},
        )

我希望生成的模板包含一个带有单个S3Target的有效“目标”块。但是,cdk synth输出一个模板,其中包含AWS::Glue::爬虫资源中的空目标:

代码语言:javascript
运行
复制
  gluecrawler:
    Type: AWS::Glue::Crawler
    Properties:
      DatabaseName: db
      Role:
        Fn::GetAtt:
          - glueroleFCCAEB57
          - Arn
      Targets: {}
EN

回答 2

Stack Overflow用户

发布于 2019-06-04 19:21:53

决心,感谢一个聪明的同事!将"S3Targets“更改为"s3Targets",将"Path”更改为"path“解决了这个问题。见下文。

嗨鲍勃 当我使用打字本时,以下内容适用于我: 新glue.CfnCrawler(此,“glue_glue.CfnCrawler”,{ databaseName:'db',角色: glue_role.roleArn,目标:{ s3Targets:{ path:"path“}} 当我使用Python时,下面的内容看起来也很有效: glue_crawler = glue.CfnCrawler( self,‘胶水_爬虫’,数据库_name=‘db’,role=glue_role.role_arn,targets={ "s3Targets":{ "path":F‘{B桶}/path/’},) 在类型记录中,TargetsProperty是一个与s3Targets作为属性的接口。在s3Targets中,path也是一个属性。我猜在JSII转换期间,它迫使我们在Python中使用相同的名称,而不是最初的CFN资源名称。

票数 4
EN

Stack Overflow用户

发布于 2020-08-16 08:11:42

解决这个问题的一个更普遍的方法是分两个步骤在cdk库中挖掘:

1.

代码语言:javascript
运行
复制
from aws_cdk import aws_glue
print(aws_glue.__file__)
(.env/lib/python3.8/site-packages/aws_cdk/aws_glue/__init__.py)
  1. 转到该文件,查看如何定义映射/类型。到2020年8月16日,你会发现
代码语言:javascript
运行
复制
@jsii.data_type(
    jsii_type="@aws-cdk/aws-glue.CfnCrawler.TargetsProperty",
    jsii_struct_bases=[],
    name_mapping={
        "catalog_targets": "catalogTargets",
        "dynamo_db_targets": "dynamoDbTargets",
        "jdbc_targets": "jdbcTargets",
        "s3_targets": "s3Targets",
    }
)

我发现lowerCamelCase总是起作用,而snake_case不起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56434938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档