PageSourceSearch

https://docs.obfusware.com/assets/js/26746b0b.d66a420f.js

js obfusware.com collected 2026-10-03 21:16:58 UTC 28,585 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkobfusware_docs=globalThis.webpackChunkobfusware_docs||[]).push([[4004],{7387(e,t,n){n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>x,frontMatter:()=>o,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Getting Started/Getting Started Guide/index","title":"Getting Started Guide","description":"A guide to creating and running your first Obfusware AWS Glue job","source":"@site/versioned_docs/version-3.0/Getting Started/Getting Started Guide/index.mdx","sourceDirName":"Getting Started/Getting Started Guide","slug":"/Getting Started/Getting Started Guide/getting-started-guide","permalink":"/docs/3.0/Getting Started/Getting Started Guide/getting-started-guide","draft":false,"unlisted":false,"editUrl":"https://github.com/msmithp2/obfusware-docs/tree/main/versioned_docs/version-3.0/Getting Started/Getting Started Guide/index.mdx","tags":[{"inline":true,"label":"obfusware-ag","permalink":"/docs/3.0/tags/obfusware-ag"}],"version":"3.0","sidebarPosition":3,"frontMatter":{"sidebar_position":3,"slug":"getting-started-guide","title":"Getting Started Guide","description":"A guide to creating and running your first Obfusware AWS Glue job","image":"/img/obfusware-ag-shield-logo-dark-sq-320x320v2.png","keywords":["obfusware","guide","job","configuration","macos","windows","linux","prerequisites","aws","cloud","glue","python"],"authors":["msmith"],"tags":["obfusware-ag"]},"sidebar":"documentsSidebar","previous":{"title":"Installing Obfusware AG","permalink":"/docs/3.0/Getting Started/install-obfusware"},"next":{"title":"Maskers","permalink":"/docs/3.0/category/maskers"}}');var r=n(4848),l=n(8453),i=n(1470),a=n(9365);const o={sidebar_position:3,slug:"getting-started-guide",title:"Getting Started Guide",description:"A guide to creating and running your first Obfusware AWS Glue job",image:"/img/obfusware-ag-shield-logo-dark-sq-320x320v2.png",keywords:["obfusware","guide","job","configuration","macos","windows","linux","prerequisites","aws","cloud","glue","python"],authors:["msmith"],tags:["obfusware-ag"]},d=void 0,c={},h=[{value:"Enabling Obfusware AWS Glue jobs",id:"enabling-obfusware-aws-glue-jobs",level:2},{value:"Obfusware-manager CLI tool",id:"obfusware-manager-cli-tool",level:3},{value:"Running the Obfusware job",id:"running-the-obfusware-job",level:2}];function u(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{}),"\n",(0,r.jsxs)(t.admonition,{type:"note",children:[(0,r.jsx)(t.mdxAdmonitionTitle,{children:(0,r.jsx)(t.strong,{children:"Notes"})}),(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Obfusware experience:"})," Beginner",(0,r.jsx)("br",{}),"\n",(0,r.jsx)(t.strong,{children:"Requirements:"}),(0,r.jsx)("br",{}),"\n\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0A Windows, MacOS, or Linux computer with internet browser",(0,r.jsx)("br",{}),"\n\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0Obfusware AG installed in AWS environment",(0,r.jsx)("br",{}),"\n",(0,r.jsx)(t.strong,{children:"Approximate time to complete:"})," 20 minutes ",(0,r.jsx)("br",{}),"\n",(0,r.jsx)(t.strong,{children:"Last updated:"})," 16 Aug 2025",(0,r.jsx)("br",{})]})]}),"\n",(0,r.jsx)(t.p,{children:"Now that Obfusware is installed to AWS, you are ready to create your first Obfusware AWS job and mask a dataset.\nAWS Glue studio allows you to visually construct a Glue job in just a few steps."}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Go to the AWS Glue studio"}),(0,r.jsx)("br",{}),"\n",(0,r.jsx)(t.a,{href:"https://console.aws.amazon.com/gluestudio/home#/jobs",children:"https://console.aws.amazon.com/gluestudio/home#/jobs"}),(0,r.jsx)("br",{}),"\nYou may be asked to log in if you do not have an active session.  You will be taken to the Glue studio page after completing the login."]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Create a new glue job"}),(0,r.jsx)("br",{}),"\nClick the Visual ETL button in the Create job section of the page.  For detailed instructions on building visual ETL jobs, see the AWS documentation.",(0,r.jsx)("br",{}),"\n",(0,r.jsx)(t.a,{href:"https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html",children:"https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Glue Studio",src:n(3662).A+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Set the Job details"}),(0,r.jsx)("br",{}),"\nClick on the Job details tab."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Job Details",src:n(3222).A
1+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Set the Basic property fields to the following values"}),"\n"]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Field"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Default"}),(0,r.jsx)(t.th,{style:{textAlign:"left"},children:"Value"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Name"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"Untitled job"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"First Obfusware job"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Description"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"<empty>"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"<empty>"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"IAM Role"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"<empty>"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"ObfuswareGlueRole"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Type"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"Spark"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Spark"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Glue version"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"Glue 5.0"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Glue 5.0"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Language"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"Python 3"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Python 3"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Worker type"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"G 1X"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"G 1X"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Automatically scale the number of workers"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"unchecked"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"unchecked"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Requested number of workers"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"10"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"2"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Generate job insights"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"checked"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"checked"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Generate lineage events"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"unchecked"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"unchecked"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Job bookmark"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"Disable"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Disable"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Join run queuing"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"unchecked"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"unchecked"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Flex execution"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"unchecked"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"unchecked"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Number of retries"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"0"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"0"})})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{style:{textAlign:"left"},children:"Job timeout (minutes"}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.em,{children:"480"})}),(0,r.jsx)(t.td,{style:{textAlign:"left"},children:(0,r.jsx)(t.strong,{children:"5"})})]})]})]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Save the job details"}),(0,r.jsx)("br",{}),"\nAfter setting the appropriate job details, save the job by clicking the Save button in the top right corner of the page."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Save Job details",src:n(3929).A+"",width:"1008",height:"742"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Build the job"}),(0,r.jsx)("br",{}),"\nSelect the Visual tab"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Select Visual",src:n(7635).A+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Add a source node by clicking the + icon.",(0,r.jsx)("br",{})]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Add Source node",src:n(5865).A+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Select the Amazon S3 source.",(0,r.jsx)("br",{})]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Select Amazon S3 source",src:n(6450).A+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["And set the Amazon S3 source parameters:","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"S3 Source Type:"})," S3 location"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"S3 Url:"})," s3://obfusware-381492123456-us-east-1/3.0/resources/sample-data.csv"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Data format:"})," CSV"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Delimiter:"})," Comma (,)"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"S3 Source details",src:n(3766).A+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Select the Obfusware Column Data Transform and set the transform parameters:","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Masker 1:"})," USLastNameMasker"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column 1:"})," last_name"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Masker 2:"})," USVariableDateMasker"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column 2:"})," dob"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Masker 3:"})," US555TelephoneMasker"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column 3:"})," phone1"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Masker 4:"})," EmailMasker"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Column 4:"})," email"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Obfusware Column Data Parameters",src:n(2729).A+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["Select the Amazon S3 Target and set the Amazon S3 target parameters:","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Format:"})," CSV"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Compression Type:"})," None"]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"S3 Target Location:"})," s3://obfusware-381492123456-us-east-1/3.0/output/"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"S3 Target details",src:n(26).A+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Save the job by clicking the Save button on the top right of the page."}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"enabling-obfusware-aws-glue-jobs",children:"Enabling Obfusware AWS Glue jobs"}),"\n",(0,r.jsx)(t.p,{children:"Now that your First Obfusware Job has been created, there is one more step you need to complete before you can run the job.\nObfusware relies on a tight integration with AWS Glue.\nTo achieve this integration, Obfusware requires its code, in the form of jar files and python files, to be accessible by AWS Glue."}),"\n",(0,r.jsx)(t.p,{children:"While it is possible to manually enable an AWS Glue job by setting some Job details advanced properties,\nit is not simple and a little error-prone, so Obfusware provides a management tool to enable a job for you."}),"\n",(0,r.jsx)(t.h3,{id:"obfusware-manager-cli-tool",children:"Obfusware-manager CLI tool"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"$ obfusware-manager enable-job --help\nusage: ObfuswareAWSGlueCLI enable-job [-h] jobs [jobs ...]\npositional arguments:\n   jobs        Names of existing AWS Glue jobs which will be enabled to execute Obfusware transforms\noptional arguments:\n   -h, --help show this help message and exit\n"})}
1),"\n",(0,r.jsx)(t.p,{children:"This tool is installed on the computer and user account used to initially install Obfusware.\nThe tool is located in the bin install directory."}),"\n",(0,r.jsxs)(i.A,{defaultValue:"mac",values:[{label:"MacOS",value:"mac"},{label:"Linux",value:"linux"},{label:"Windows",value:"win"}],children:[(0,r.jsx)(a.A,{value:"mac",children:(0,r.jsx)(t.p,{children:(0,r.jsx)(t.code,{children:"$HOME/.obfusware-aws/<version>/bin"})})}),(0,r.jsx)(a.A,{value:"linux",children:(0,r.jsx)(t.p,{children:(0,r.jsx)(t.code,{children:"$HOME/.obfusware-aws/<version>/bin"})})}),(0,r.jsx)(a.A,{value:"win",children:(0,r.jsx)(t.p,{children:(0,r.jsx)(t.code,{children:"%USERPROFILE%\\obfusware-aws\\<version>\\bin"})})})]}),"\n",(0,r.jsxs)(t.p,{children:["To enable the First Obfusware Job, simply run the command:",(0,r.jsx)("br",{}),"\n",(0,r.jsx)(t.code,{children:"<bininstalldir>/obfusware-manager -v enable-job \u201cFirst Obfusware Job\u201d"})]}),"\n",(0,r.jsxs)(t.p,{children:["You should see the following output from the obfusware-manager command:",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-markup",metastring:'title="Output: <bininstalldir>/obfusware-manager -v enable-job \u201cFirst Obfusware Job\u201d"',children:"Enabling AWS Glue jobs to execute Obfusware transforms...\nEnabling AWS Glue job(First Obfusware Job)\nEnabling AWS Glue jobs SUCCEEDED\nSuccess\n"})}),"\n",(0,r.jsx)(t.p,{children:"The Obfusware First Job is now ready to run."}),"\n",(0,r.jsx)(t.h2,{id:"running-the-obfusware-job",children:"Running the Obfusware job"}),"\n",(0,r.jsx)(t.p,{children:"To run the job, select the Runs tab. Then click the Run button on the top right of the page."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Run tab",src:n(4491).A+"",width:"1920",height:"1411"})}),"\n",(0,r.jsxs)(t.p,{children:["When the job finishes running, in approximately 1:30-1:45 minutes, the run status will change to ",(0,r.jsx)(t.strong,{children:"Succeeded"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["To see the result of the run, you can compare the original file (",(0,r.jsx)(t.code,{children:"sample-data.csv"}),") with the results of the run stored in the s3 ",(0,r.jsx)(t.code,{children:"output/"})," folder."]}),"\n",(0,r.jsxs)(t.p,{children:["Comparing the results\nThe location and name of the source file, ",(0,r.jsx)(t.code,{children:"sample-data.csv"}),", is well known, but while the location of the target file is known, the exact name is generated by the job.\nTherefore, to compare the results you first need to list the contents of the ",(0,r.jsx)(t.code,{children:"output/"})," folder to discover the name.\nTo generate a listing you can run the command:",(0,r.jsx)("br",{})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"$ aws s3 ls s3://obfusware-381492125655-us-east-1/3.0/output/\n2025-08-01 10:24:46          0\n# highlight-next-line\n2025-08-01 10:53:48 47600073 run-1754060013607-part-r-00000\n"})}),"\n",(0,r.jsx)(t.p,{children:"Look for the file with a timestamp that matches the end of the job run.\nOnce you have discovered the name of the result file you can compare the contents of the source file with the contents of the target file."}),"\n",(0,r.jsxs)(i.A,{defaultValue:"mac",values:[{label:"MacOS",value:"mac"},{label:"Linux",value:"linux"},{label:"Windows",value:"win"}],children:[(0,r.jsx)(a.A,{value:"mac",children:(0,r.jsxs)("pre",{children:[(0,r.jsxs)(t.p,{children:["$ aws s3 cp s3://obfusware-381492123456-us-east-1/3.0/resources/sample-data.csv - | head -2\nfirst_name,last_name,dob,company_name,address,city,county,state,zip,phone1,phone2,email,web\nJames,",(0,r.jsx)("mark",{children:"Butt"}),",",(0,r.jsx)("mark",{children:"4/1/1997"}),',"Benton, John B Jr",6649 N Blue Gum St,New Orleans,Orleans,LA,70116,',(0,r.jsx)("mark",{children:"504-621-8927"}),",504-845-1427,",(0,r.jsx)("mark",{children:(0,r.jsx)(t.a,{href:"mailto:[email protected]",children:"[email protected]"})}),",",(0,r.jsx)(t.a,{href:"http://www.bentonjohnbjr.com",children:"http://www.bentonjohnbjr.com"})]}),(0,r.jsxs)(t.p,{children:["$ aws s3 cp s3://obfusware-381492125655-us-east-1/3.0/output/run-1754060013607-part-r-00000 - | head -2\nfirst_name,last_name,dob,company_name,address,city,county,state,zip,phone1,phone2,email,web\nJames,",(0,r.jsx)("mark",{children:"Ketchersid"}),",",(0,r.jsx)("mark",{children:"5/1/1997"}),',"Benton, John B Jr","6649 N Blue Gum St","New Orleans",Orleans,LA,70116,',(0,r.jsx)("mark",{children:"504-555-7562"}),",504-845-1427,",(0,r.jsx)("mark",{children:(0,r.jsx)(t.a,{href:"mailto:[email protected]",children:"[email protected]"})}),',"',(0,r.jsx)(t.a,{href:"http://www.bentonjohnbjr.com",children:"http://www.bentonjohnbjr.com"}),'"']})]})}),(0,r.jsx)(a.A,{value:"linux",children:(0,r.jsxs)("pre",{children:[(0,r.jsxs)(t.p,{children:["$ aws s3 cp s3://obfusware-381492123456-us-east-1/3.0/resources/sample-data.csv - | head -2\nfirst_name,last_name,dob,company_name,address,city,county,state,zip,phone1,phone2,email,web\nJames,",(0,r.jsx)("mark",{children:"Butt"}),",",(0,r.jsx)("mark",{children:"4/1/1997"}),',"Benton, John B Jr",6649 N Blue Gum St,New Orleans,Orleans,LA,70116,',(0,r.jsx)("mark",{children:"504-621-8927"}),",504-845-1427,",(0,r.jsx)("mark",{children:(0,r.jsx)(t.a,{href:"mailto:[email protected]",children:"[email protected]"})}),",",(0,r.jsx)(t.a,{href:"http://www.bentonjohnbjr.com",children:"http://www.bentonjohnbjr.com"})]}),(0,r.jsxs)(t.p,{children:["$ aws s3 cp s3://obfusware-381492125655-us-east-1/3.0/output/run-1754060013607-part-r-00000 - | head -2\nfirst_name,last_name,dob,company_name,address,city,county,state,zip,phone1,phone2,email,web\nJames,",(0,r.jsx)("mark",{children:"Ketchersid"}),",",(0,r.jsx)("mark",{children:"5/1/1997"}),',"Benton, John B Jr","6649 N Blue Gum St","New Orleans",Orleans,LA,70116,',(0,r.jsx)("mark",{children:"504-555-7562"}),",504-845-1427,",(0,r.jsx)("mark",{children:(0,r.jsx)(t.a,{href:"mailto:[email protected]",children:"[email protected]"})}),',"',(0,r.jsx)(t.a,{href:"http://www.bentonjohnbjr.com",children:"http://www.bentonjohnbjr.com"}),'"']})]})}),(0,r.jsx)(a.A,{value:"win",children:(0,r.jsxs)("pre",{children:[(0,r.jsxs)(t.p,{children:[">
1 aws s3 cp s3://obfusware-381492123456-us-east-1/3.0/resources/sample-data.csv - | more\nfirst_name,last_name,dob,company_name,address,city,county,state,zip,phone1,phone2,email,web\nJames,",(0,r.jsx)("mark",{children:"Butt"}),",",(0,r.jsx)("mark",{children:"4/1/1997"}),',"Benton, John B Jr",6649 N Blue Gum St,New Orleans,Orleans,LA,70116,',(0,r.jsx)("mark",{children:"504-621-8927"}),",504-845-1427,",(0,r.jsx)("mark",{children:(0,r.jsx)(t.a,{href:"mailto:[email protected]",children:"[email protected]"})}),",",(0,r.jsx)(t.a,{href:"http://www.bentonjohnbjr.com",children:"http://www.bentonjohnbjr.com"}),"\n..."]}),(0,r.jsxs)(t.p,{children:["> aws s3 cp s3://obfusware-381492125655-us-east-1/3.0/output/run-1754060013607-part-r-00000 - | more\nfirst_name,last_name,dob,company_name,address,city,county,state,zip,phone1,phone2,email,web\nJames,",(0,r.jsx)("mark",{children:"Ketchersid"}),",",(0,r.jsx)("mark",{children:"5/1/1997"}),',"Benton, John B Jr","6649 N Blue Gum St","New Orleans",Orleans,LA,70116,',(0,r.jsx)("mark",{children:"504-555-7562"}),",504-845-1427,",(0,r.jsx)("mark",{children:(0,r.jsx)(t.a,{href:"mailto:[email protected]",children:"[email protected]"})}),',"',(0,r.jsx)(t.a,{href:"http://www.bentonjohnbjr.com",children:"http://www.bentonjohnbjr.com"}),'"\n...']})]})})]}),"\n",(0,r.jsxs)(t.p,{children:["By comparing the source fields (",(0,r.jsx)(t.code,{children:"last_name, dob, phone1, email"}),") to the corresponding target fields, you can see the results of masking the selected fields."]})]})}function x(e={}){const{wrapper:t}={...(0,l.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},9365(e,t,n){n.d(t,{A:()=>i});n(6540);var s=n(4164);const r="tabItem_Ymn6";var l=n(4848);function i({children:e,hidden:t,className:n}){return(0,l.jsx)("div",{role:"tabpanel",className:(0,s.A)(r,n),hidden:t,children:e})}},1470(e,t,n){n.d(t,{A:()=>S});var s=n(6540),r=n(4164),l=n(7559),i=n(3104),a=n(6347),o=n(205),d=n(7485),c=n(1682),h=n(679);function u(e){return s.Children.toArray(e).filter(e=>"\n"!==e).map(e=>{if(!e||(0,s.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)})?.filter(Boolean)??[]}function x(e){const{values:t,children:n}=e;return(0,s.useMemo)(()=>{const e=t??function(e){return u(e).map(({props:{value:e,label:t,attributes:n,default:s}})=>({value:e,label:t,attributes:n,default:s}))}(n);return function(e){const t=(0,c.XI)(e,(e,t)=>e.value===t.value);if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map(e=>e.value).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e},[t,n])}function j({value:e,tabValues:t}){return t.some(t=>t.value===e)}function m({queryString:e=!1,groupId:t}){const n=(0,a.W6)(),r=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,d.aZ)(r),(0,s.useCallback)(e=>{if(!r)return;const t=new URLSearchParams(n.location.search);t.set(r,e),n.replace({...n.location,search:t.toString()})},[r,n])]}function b(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,l=x(e),[i,a]=(0,s.useState)(()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(e){if(!j({value:e,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map(e=>e.value).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=t.find(e=>e.default)??t[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:l})),[d,c]=m({queryString:n,groupId:r}),[u,b]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[n,r]=(0,h.Dv)(t);return[n,(0,s.useCallback)(e=>{t&&r.set(e)},[t,r])]}({groupId:r}),g=(()=>{const e=d??u;return j({value:e,tabValues:l})?e:null})();(0,o.A)(()=>{g&&a(g)},[g]);return{selectedValue:i,selectValue:(0,s.useCallback)(e=>{if(!j({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);a(e),c(e),b(e)},[c,b,l]),tabValues:l}}var g=n(2303);const f="tabList__CuJ",p="tabItem_LNqP";var w=n(4848);function y({className:e,block:t,selectedValue:n,selectValue:s,tabValues:l}){const a=[],{blockElementScrollPositionUntilNextRender:o}=(0,i.a_)(),d=e=>{const t=e.currentTarget,r=a.indexOf(t),i=l[r].value;i!==n&&(o(t),s(i))},c=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,w.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},e),children:l.map(({value:e,label:t,attributes:s})=>(0,w.jsx)("li",{role:"tab",tabIndex:n===e?0:-1,"aria-selected":n===e,ref:e=>{a.push(e)},onKeyDown:c,onClick:d,...s,className:(0,r.A)("tabs__item",p,s?.className,{"tabs__item--active":n===e}),children:t??e},e))})}function A({lazy:e,children:t,selectedValue:n}
1){const l=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=l.find(e=>e.props.value===n);return e?(0,s.cloneElement)(e,{className:(0,r.A)("margin-top--md",e.props.className)}):null}return(0,w.jsx)("div",{className:"margin-top--md",children:l.map((e,t)=>(0,s.cloneElement)(e,{key:t,hidden:e.props.value!==n}))})}function v(e){const t=b(e);return(0,w.jsxs)("div",{className:(0,r.A)(l.G.tabs.container,"tabs-container",f),children:[(0,w.jsx)(y,{...t,...e}),(0,w.jsx)(A,{...t,...e})]})}function S(e){const t=(0,g.A)();return(0,w.jsx)(v,{...e,children:u(e.children)},String(t))}},5865(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/Addsourcenode-17f64836c12b3c81238cdf848c33f715.png"},3662(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/Gluestudio-85b1bbd79203c3ff3cd4c1747980fc9f.png"},3222(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/Jobdetails-c6f7f2c09053d4f1c8904668c8a236b4.png"},2729(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/ObfuswareColumnDataparameters-13c6f176b51bdad7702a9890db2dbf1d.png"},4491(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/Runtab-964530d93a3d0df88eacb923819ce095.png"},26(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/S3Targetdetails-54aa423b44b1e397b99d1f1e67c64cc7.png"},3766(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/S3sourcedetails-a2166bb7f66d69611ceb698db5591fac.png"},3929(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/SaveJobdetails-7d3a89aa5776afccfc1aa4600fe9809e.png"},6450(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/SelectAmazonS3source-eae04605a887f5ba03484b6b1e257b37.png"},7635(e,t,n){n.d(t,{A:()=>s});const s=n.p+"assets/images/SelectVisual-da0ac2d8d0b08193fcd0b36f87c07626.png"},8453(e,t,n){n.d(t,{R:()=>i,x:()=>a});var s=n(6540);const r={},l=s.createContext(r);function i(e){const t=s.useContext(l);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(l.Provider,{value:t},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.