amazon-web-services - 如何使用 AWS_MSK CDK 创建连接器 CustomPlugin?

标签 amazon-web-services apache-kafka aws-cloudformation aws-msk aws-msk-connect

我正在使用 CfnConnector(如下面的文档引用链接所述)创建 MSK 连接器,它需要一个 customPluginArn。我如何使用 CDK 创建自定义插件,以便能够获取 CustomPluginArn 和修订号?没有任何关于它的文档。谢谢

引用类 CfnConnector 文档: enter link description here

最佳答案

我结束了创建自定义资源,如果对某人有用,请在此处编码:

 def _create_custom_plugin(self):
    create_params = {
    "contentType": 'ZIP',
    "location": { 
            's3Location': { 
            'bucketArn': self._msk_connector_bucket_arn,
            'fileKey': self._plugin_file_name, 
            'objectVersion': 'null'
            }
    },            
    "name": self._plugin_name,
    "description": self._plugin_name
    }
     
    create_custom_plugin = custom_resources.AwsSdkCall(
            service='KafkaConnect',
            action='createCustomPlugin',
            region='ap-southeast-2',
            physical_resource_id=custom_resources.PhysicalResourceId.of(f'connector-{self._environment_name}'),
            parameters = create_params
        )

    cr_policy = iam.Policy(self, 'cr_policy',
        statements = [iam.PolicyStatement(
            actions=[
                's3:*'
            ],
            effect=iam.Effect.ALLOW,
            resources=['*']
        )]
    )

    lambda_role = self._get_provisioning_lambda_role(construct_id=id)
    lambda_role.attach_inline_policy(cr_policy)         
            
    create_update_custom_plugin = custom_resources.AwsCustomResource(self,
        'CreateUpdateCustomPlugin',
        on_create=create_custom_plugin,
        on_update=create_custom_plugin,
        policy=custom_resources.AwsCustomResourcePolicy.from_sdk_calls(resources=custom_resources.AwsCustomResourcePolicy.ANY_RESOURCE)
        ,role=lambda_role)
    self._custom_plugin_arn = create_update_custom_plugin.get_response_field('customPluginArn')
    self._revision = create_update_custom_plugin.get_response_field('revision')  


def _get_provisioning_lambda_role(self, construct_id: str):
     return iam.Role(
     scope=self,
     id=f'{construct_id}-LambdaRole',
     assumed_by=iam.ServicePrincipal('lambda.amazonaws.com'),
     managed_policies=[iam.ManagedPolicy.from_aws_managed_policy_name(
        "service-role/AWSLambdaBasicExecutionRole")],
     )

关于amazon-web-services - 如何使用 AWS_MSK CDK 创建连接器 CustomPlugin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73348883/

相关文章:

javascript - 部署到 AWS 时出现 React 应用程序路由问题

spring - 使用 spring-kafka-test 无法启动测试(NoClassDefFoundError)

Python:如何正确设置 boto3 并连接到 AWS S3?

python - AWS Lambda 发送 HTTP 请求

python - 使用 Kafka 在应用程序上打开太多文件错误

linux - 遇到 Ubuntu .profile 和 .bashrc 问题

python - 添加对对流层中现有 sns 主题的订阅

aws-cloudformation - CloudFormation 在非默认 VPC 中未收到来自 cfn-signal 的信号

amazon-web-services - 在 YAML 文件中设置 S3 存储桶的生命周期配置

javascript - 连接到 AWS-SDK 时 Node.js 303 永久重定向