
import boto3


def get_existing_records(dynamodb_client):
    """
    Generates existing Miro records from the SourceData table.
    """
    paginator = dynamodb_client.get_paginator('scan')
    for page in paginator.paginate(TableName='SourceData'):
        for item in page['Items']:
            yield item


if __name__ == '__main__':
    dynamodb_client = boto3.client('dynamodb')

    for item in get_existing_records(dynamodb_client):
        print(item)
        break


import boto3


OLD_TABLE = 'SourceData'
OLD_BUCKET = 'wellcomecollection-vhs-sourcedata'

NEW_TABLE = 'wellcomecollection-vhs-sourcedata-miro'
NEW_BUCKET = 'wellcomecollection-vhs-sourcedata-miro'


def get_existing_records(dynamodb_client):
    """
    Generates existing Miro records from the SourceData table.
    """
    paginator = dynamodb_client.get_paginator('scan')
    for page in paginator.paginate(TableName=OLD_TABLE):
        for item in page['Items']:
            if 'reindexShard' not in item:
                print(item)

            if item['sourceName'] != {'S': 'miro'}:
                continue
            yield item


if __name__ == '__main__':
    dynamodb_client = boto3.client('dynamodb')
    s3_client = boto3.client('s3')

    for item in get_existing_records(dynamodb_client):
        del item['sourceName']

        s3_client.copy_object(
            Bucket=NEW_BUCKET,
            Key=item['s3key']['S'].replace('miro/', ''),
            CopySource={
                'Bucket': OLD_BUCKET,
                'Key': item['s3key']['S']
            }
        )

        print(item)
        break

Copy the S3 object into the new bucket
Copy the S3 object into the new bucket

  
  import boto3
+ 
+ 
+ OLD_TABLE = 'SourceData'
+ OLD_BUCKET = 'wellcomecollection-vhs-sourcedata'
+ 
+ NEW_TABLE = 'wellcomecollection-vhs-sourcedata-miro'
+ NEW_BUCKET = 'wellcomecollection-vhs-sourcedata-miro'
  
  
  def get_existing_records(dynamodb_client):
      """
      Generates existing Miro records from the SourceData table.
      """
      paginator = dynamodb_client.get_paginator('scan')
-     for page in paginator.paginate(TableName='SourceData'):
+     for page in paginator.paginate(TableName=OLD_TABLE):
          for item in page['Items']:
+             if 'reindexShard' not in item:
+                 print(item)
+ 
+             if item['sourceName'] != {'S': 'miro'}:
+                 continue
              yield item
  
  
  if __name__ == '__main__':
      dynamodb_client = boto3.client('dynamodb')
+     s3_client = boto3.client('s3')
  
      for item in get_existing_records(dynamodb_client):
+         del item['sourceName']
+ 
+         s3_client.copy_object(
+             Bucket=NEW_BUCKET,
+             Key=item['s3key']['S'].replace('miro/', ''),
+             CopySource={
+                 'Bucket': OLD_BUCKET,
+                 'Key': item['s3key']['S']
+             }
+         )
+ 
          print(item)
          break
  
Copy the S3 object into the new bucket
## Code Before:

import boto3


def get_existing_records(dynamodb_client):
    """
    Generates existing Miro records from the SourceData table.
    """
    paginator = dynamodb_client.get_paginator('scan')
    for page in paginator.paginate(TableName='SourceData'):
        for item in page['Items']:
            yield item


if __name__ == '__main__':
    dynamodb_client = boto3.client('dynamodb')

    for item in get_existing_records(dynamodb_client):
        print(item)
        break

## Instruction:
Copy the S3 object into the new bucket
## Code After:

import boto3


OLD_TABLE = 'SourceData'
OLD_BUCKET = 'wellcomecollection-vhs-sourcedata'

NEW_TABLE = 'wellcomecollection-vhs-sourcedata-miro'
NEW_BUCKET = 'wellcomecollection-vhs-sourcedata-miro'


def get_existing_records(dynamodb_client):
    """
    Generates existing Miro records from the SourceData table.
    """
    paginator = dynamodb_client.get_paginator('scan')
    for page in paginator.paginate(TableName=OLD_TABLE):
        for item in page['Items']:
            if 'reindexShard' not in item:
                print(item)

            if item['sourceName'] != {'S': 'miro'}:
                continue
            yield item


if __name__ == '__main__':
    dynamodb_client = boto3.client('dynamodb')
    s3_client = boto3.client('s3')

    for item in get_existing_records(dynamodb_client):
        del item['sourceName']

        s3_client.copy_object(
            Bucket=NEW_BUCKET,
            Key=item['s3key']['S'].replace('miro/', ''),
            CopySource={
                'Bucket': OLD_BUCKET,
                'Key': item['s3key']['S']
            }
        )

        print(item)
        break
