{"id":20358202,"url":"https://github.com/irods/irods_client_aws_lambda_s3","last_synced_at":"2025-10-06T02:49:26.420Z","repository":{"id":66171934,"uuid":"233328488","full_name":"irods/irods_client_aws_lambda_s3","owner":"irods","description":null,"archived":false,"fork":false,"pushed_at":"2021-12-31T01:50:31.000Z","size":32,"stargazers_count":1,"open_issues_count":3,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-04T17:50:48.593Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/irods.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-12T02:43:31.000Z","updated_at":"2021-12-31T01:50:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"7f5ac8c1-add5-4c6b-8bcf-455f4179fa1d","html_url":"https://github.com/irods/irods_client_aws_lambda_s3","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/irods/irods_client_aws_lambda_s3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irods%2Firods_client_aws_lambda_s3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irods%2Firods_client_aws_lambda_s3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irods%2Firods_client_aws_lambda_s3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irods%2Firods_client_aws_lambda_s3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/irods","download_url":"https://codeload.github.com/irods/irods_client_aws_lambda_s3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irods%2Firods_client_aws_lambda_s3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278551495,"owners_count":26005388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T23:25:52.071Z","updated_at":"2025-10-06T02:49:26.403Z","avatar_url":"https://github.com/irods.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# irods_client_aws_lambda_s3\n\nThis AWS Lambda function updates an iRODS Catalog with events that occur in one or more S3 buckets.\n\nFiles created, renamed, or deleted in S3 appear quickly in iRODS.\n\nThe following AWS configurations are supported at this time:\n- S3 -\u003e Lambda -\u003e iRODS\n- S3 -\u003e SNS -\u003e Lambda -\u003e iRODS\n- S3 -\u003e SQS -\u003e Lambda -\u003e iRODS\n\niRODS is assumed to have its associated S3 Storage Resource(s) configured with `HOST_MODE=cacheless_attached`.\n\nIf SQS is involved, it is assumed to be configured with `batch_size = 1`.\n\n## Configuration\n\n### Function\n\nHandler: `irods_client_aws_lambda_s3.lambda_handler`\n\nRuntime: `Python 3.7`\n\nEnvironment Variables:\n\n`IRODS_COLLECTION_PREFIX` : `/tempZone/home/rods/lambda`\n\n`IRODS_ENVIRONMENT_SSM_PARAMETER_NAME` :  `irods_default_environment`\n\n`IRODS_MULTIBUCKET_SUFFIX` : `_s3`\n\n### Triggers\n\nYou must configure your lambda to trigger on all `ObjectCreated` and `ObjectRemoved` events for a connected S3 bucket.\n\n### iRODS Connection Environment\n\nThe connection information is stored in the `AWS Systems Manager \u003e Parameter Store` as a JSON object string.\n\n  https://console.aws.amazon.com/systems-manager/parameters\n\nCreate a parameter with:\n\nName (must match `IRODS_ENVIRONMENT_SSM_PARAMETER_NAME` above):\n```\nirods_default_environment\n```\n\nType:\n```\nSecureString\n```\n\nValue:\n```\n{\n    \"irods_default_resource\": \"s3Resc\",\n    \"irods_host\": \"irods.example.org\",\n    \"irods_password\": \"rods\",\n    \"irods_port\": 1247,\n    \"irods_user_name\": \"rods\",\n    \"irods_zone_name\": \"tempZone\"\n}\n```\n\n## Configuration Options\n\n### SSL Support\n\nIf the Lambda needs to be configured to connect with an SSL-enabled iRODS Zone, the following additional keys need to be included in the environment in the Parameter Store:\n```\n    \"irods_client_server_negotiation\": \"request_server_negotiation\",\n    \"irods_client_server_policy\": \"CS_NEG_REQUIRE\",\n    \"irods_encryption_algorithm\": \"AES-256-CBC\",\n    \"irods_encryption_key_size\": 32,\n    \"irods_encryption_num_hash_rounds\": 16,\n    \"irods_encryption_salt_size\": 8,\n    \"irods_ssl_verify_server\": \"cert\",\n    \"irods_ssl_ca_certificate_file\": \"irods.crt\"\n```\n\nNote `irods_ssl_ca_certificate_file` is a relative path to a certificate file (or [certificate chain file](https://docs.python.org/3/library/ssl.html#ssl-certificates)) within the Lambda package.\n\n### Multi-Bucket Support\n\nThis Lambda function can be configured to receive events from multiple sources at the same time.\n\nIf the `irods_default_resource` is *NOT* defined in the environment in the Parameter Store, then the Lambda function will derive the name of a target iRODS Resource.\n\nBy default, the Lambda function will append `_s3` to the incoming bucket name.\n\nFor example, if the incoming event comes from bucket `example_bucket`, then the iRODS resource that would be targeted would be `example_bucket_s3`.\n\nHowever, if `IRODS_MULTIBUCKET_SUFFIX` is defined as `-S3Resc`, the the iRODS resource that would be targeted would be `example_bucket-S3Resc`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firods%2Firods_client_aws_lambda_s3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firods%2Firods_client_aws_lambda_s3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firods%2Firods_client_aws_lambda_s3/lists"}